Procedure: Bestanden opslaan met het onderdeel SaveFileDialog
Met het onderdeel SaveFileDialog kunnen gebruikers door het bestandssysteem bladeren en bestanden selecteren die moeten worden opgeslagen. Het dialoogvenster retourneert het pad en de naam van het bestand dat de gebruiker in het dialoogvenster heeft geselecteerd. U moet echter de code schrijven om de bestanden daadwerkelijk naar schijf te schrijven.
Een bestand opslaan met het onderdeel SaveFileDialog
Het dialoogvenster Bestand opslaan weergeven en een methode aanroepen om het bestand op te slaan dat door de gebruiker is geselecteerd.
Gebruik de OpenFile methode van het SaveFileDialog-onderdeel om het bestand op te slaan. Met deze methode krijgt u een Stream-object waarnaar u kunt schrijven.
In het onderstaande voorbeeld wordt de eigenschap DialogResult gebruikt om de naam van het bestand op te halen en de OpenFile methode om het bestand op te slaan. De methode OpenFile geeft u een stream om het bestand naar te schrijven.
In het onderstaande voorbeeld is er een Button besturingselement waaraan een afbeelding is toegewezen. Wanneer u op de knop klikt, wordt een SaveFileDialog onderdeel geïnstantieerd met een filter waarmee bestanden van het type .gif, .jpeg en .bmpzijn toegestaan. Als een bestand van dit type is geselecteerd in het dialoogvenster Bestand opslaan, wordt de afbeelding van de knop opgeslagen.
Belangrijk
Als u de eigenschap FileName wilt ophalen of instellen, vereist uw assembly een bevoegdheidsniveau dat wordt verleend door de System.Security.Permissions.FileIOPermission-klasse. Als u in een gedeeltelijke vertrouwenscontext werkt, kan het proces een uitzondering genereren vanwege onvoldoende bevoegdheden. Zie Basisprincipes van codetoegangsbeveiligingvoor meer informatie.
In het voorbeeld wordt ervan uitgegaan dat uw formulier een Button besturingselement heeft, waarbij de eigenschap Image is ingesteld op een bestand van het type .gif, .jpeg of .bmp.
Notitie
De FilterIndex eigenschap van de FileDialog klasse (die vanwege overname deel uitmaakt van de SaveFileDialog klasse) maakt gebruik van een op één gebaseerde index. Dit is belangrijk als u code schrijft om gegevens op te slaan in een specifieke indeling (bijvoorbeeld het opslaan van een bestand in tekst zonder opmaak versus binaire indeling). Deze eigenschap wordt getoond in het onderstaande voorbeeld.
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# en Visual C++) Plaats de volgende code in de constructor van het formulier om de gebeurtenis-handler te registreren.
this.button2.Click += new System.EventHandler(this.button2_Click);
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
Zie BeginWrite en Writevoor meer informatie over het schrijven van bestandsstromen.
Notitie
Bepaalde besturingselementen, zoals het besturingselement RichTextBox, hebben de mogelijkheid om bestanden op te slaan.
Zie ook
.NET Desktop feedback