Guide pratique pour enregistrer des fichiers à l’aide du composant SaveFileDialog
Le composant SaveFileDialog permet aux utilisateurs de parcourir le système de fichiers et de sélectionner des fichiers à enregistrer. La boîte de dialogue retourne le chemin d’accès et le nom du fichier sélectionné par l’utilisateur dans la boîte de dialogue. Toutefois, vous devez écrire le code pour écrire les fichiers sur le disque.
Pour enregistrer un fichier à l’aide du composant SaveFileDialog
Affichez la boîte de dialogue Enregistrer le fichier et appelez une méthode pour enregistrer le fichier sélectionné par l’utilisateur.
Utilisez la méthode OpenFile du composant SaveFileDialog pour enregistrer le fichier. Cette méthode vous donne un objet Stream dans lequel vous pouvez écrire.
L’exemple ci-dessous utilise la propriété DialogResult pour obtenir le nom du fichier et la méthode OpenFile pour enregistrer le fichier. La méthode OpenFile vous donne un flux dans lequel écrire le fichier.
Dans l’exemple ci-dessous, il existe un contrôle Button avec une image qui lui est affectée. Lorsque vous cliquez sur le bouton, un composant SaveFileDialog est instancié avec un filtre qui autorise les fichiers de type .gif, .jpeg et .bmp. Si un fichier de ce type est sélectionné dans la boîte de dialogue Enregistrer le fichier, l’image du bouton est enregistrée.
Important
Pour obtenir ou définir la propriété FileName, votre assembly nécessite un niveau de privilège accordé par la classe System.Security.Permissions.FileIOPermission. Si vous travaillez dans un contexte de confiance partielle, le processus peut entraîner une exception en raison de privilèges insuffisants. Pour plus d’informations, consultez Concepts de base de la sécurité de l’accès au code.
L’exemple suppose que votre formulaire a un contrôle Button avec sa propriété Image définie sur un fichier de type .gif, .jpeg ou .bmp.
Note
La propriété FilterIndex de la classe FileDialog (qui, en raison de l’héritage, fait partie de la classe SaveFileDialog) utilise un index basé sur un seul. Cela est important si vous écrivez du code pour enregistrer des données dans un format spécifique (par exemple, en enregistrant un fichier au format texte brut ou binaire). Cette propriété est proposée dans l’exemple ci-dessous.
Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click ' Displays a SaveFileDialog so the user can save the Image ' assigned to Button2. Dim saveFileDialog1 As New SaveFileDialog() saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif" saveFileDialog1.Title = "Save an Image File" saveFileDialog1.ShowDialog() ' If the file name is not an empty string open it for saving. If saveFileDialog1.FileName <> "" Then ' Saves the Image via a FileStream created by the OpenFile method. Dim fs As System.IO.FileStream = Ctype _ (saveFileDialog1.OpenFile(), System.IO.FileStream) ' Saves the Image in the appropriate ImageFormat based upon the ' file type selected in the dialog box. ' NOTE that the FilterIndex property is one-based. Select Case saveFileDialog1.FilterIndex Case 1 Me.button2.Image.Save(fs, _ System.Drawing.Imaging.ImageFormat.Jpeg) Case 2 Me.button2.Image.Save(fs, _ System.Drawing.Imaging.ImageFormat.Bmp) Case 3 Me.button2.Image.Save(fs, _ System.Drawing.Imaging.ImageFormat.Gif) End Select fs.Close() End If End Sub
private void button2_Click(object sender, System.EventArgs e) { // Displays a SaveFileDialog so the user can save the Image // assigned to Button2. SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"; saveFileDialog1.Title = "Save an Image File"; saveFileDialog1.ShowDialog(); // If the file name is not an empty string open it for saving. if(saveFileDialog1.FileName != "") { // Saves the Image via a FileStream created by the OpenFile method. System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile(); // Saves the Image in the appropriate ImageFormat based upon the // File type selected in the dialog box. // NOTE that the FilterIndex property is one-based. switch(saveFileDialog1.FilterIndex) { case 1 : this.button2.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg); break; case 2 : this.button2.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp); break; case 3 : this.button2.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Gif); break; } fs.Close(); } }
private: System::Void button2_Click(System::Object ^ sender, System::EventArgs ^ e) { // Displays a SaveFileDialog so the user can save the Image // assigned to Button2. SaveFileDialog ^ saveFileDialog1 = new SaveFileDialog(); saveFileDialog1->Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"; saveFileDialog1->Title = "Save an Image File"; saveFileDialog1->ShowDialog(); // If the file name is not an empty string, open it for saving. if(saveFileDialog1->FileName != "") { // Saves the Image through a FileStream created by // the OpenFile method. System::IO::FileStream ^ fs = safe_cast\<System::IO::FileStream*>( saveFileDialog1->OpenFile()); // Saves the Image in the appropriate ImageFormat based on // the file type selected in the dialog box. // Note that the FilterIndex property is one based. switch(saveFileDialog1->FilterIndex) { case 1 : this->button2->Image->Save(fs, System::Drawing::Imaging::ImageFormat::Jpeg); break; case 2 : this->button2->Image->Save(fs, System::Drawing::Imaging::ImageFormat::Bmp); break; case 3 : this->button2->Image->Save(fs, System::Drawing::Imaging::ImageFormat::Gif); break; } fs->Close(); } }
(Visual C# et Visual C++) Placez le code suivant dans le constructeur du formulaire pour inscrire le gestionnaire d’événements.
this.button2.Click += new System.EventHandler(this.button2_Click);
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
Pour plus d’informations sur l’écriture de flux de fichiers, consultez BeginWrite et Write.
Remarque
Certains contrôles, tels que le contrôle RichTextBox, ont la possibilité d’enregistrer des fichiers.
Voir aussi
.NET Desktop feedback