Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Składnik SaveFileDialog umożliwia użytkownikom przeglądanie systemu plików i wybieranie plików do zapisania. Okno dialogowe zwraca ścieżkę i nazwę pliku wybranego przez użytkownika w oknie dialogowym. Należy jednak napisać kod, aby rzeczywiście zapisać pliki na dysku.
Aby zapisać plik przy użyciu składnika SaveFileDialog
Wyświetl okno dialogowe Zapisz plik i wywołaj metodę, aby zapisać plik wybrany przez użytkownika.
Użyj metody SaveFileDialog składnika OpenFile, aby zapisać plik. Ta metoda udostępnia obiekt Stream, do którego można napisać.
W poniższym przykładzie użyto właściwości DialogResult w celu pobrania nazwy pliku oraz metody OpenFile w celu zapisania pliku. Metoda OpenFile udostępnia strumień do zapisania pliku.
W poniższym przykładzie istnieje kontrolka Button z przypisanym do niego obrazem. Po kliknięciu przycisku składnik SaveFileDialog jest tworzony z filtrem, który umożliwia pliki typu .gif, .jpeg i .bmp. Jeśli plik tego typu zostanie wybrany w oknie dialogowym Zapisywanie pliku, obraz przycisku zostanie zapisany.
Ważne
Aby uzyskać lub ustawić właściwość FileName, zestaw wymaga poziomu uprawnień przyznanego przez klasę System.Security.Permissions.FileIOPermission. Jeśli korzystasz z kontekstu częściowego zaufania, proces może zgłosić wyjątek z powodu niewystarczających uprawnień. Aby uzyskać więcej informacji, zobacz Podstawy Bezpieczeństwa Dostępu do Kodów.
W przykładzie przyjęto założenie, że formularz ma kontrolkę Button z właściwością Image ustawioną na plik typu .gif, .jpeg lub .bmp.
Uwaga / Notatka
Właściwość FileDialog klasy FilterIndex (która ze względu na dziedziczenie jest częścią klasy SaveFileDialog) używa indeksu bazującego na jedynce. Jest to ważne, jeśli piszesz kod do zapisywania danych w określonym formacie (na przykład zapisywanie pliku w formacie zwykłego tekstu i formatu binarnego). Ta właściwość jest opisywana w poniższym przykładzie.
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 Subprivate 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# i Visual C++) Umieść następujący kod w konstruktorze formularza, aby zarejestrować procedurę obsługi zdarzeń.
this.button2.Click += new System.EventHandler(this.button2_Click);this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);Aby uzyskać więcej informacji na temat pisania strumieni plików, zobacz BeginWrite i Write.
Uwaga / Notatka
Niektóre kontrolki, takie jak kontrolka RichTextBox, mają możliwość zapisywania plików.
Zobacz także
- SaveFileDialog
- składnika SaveFileDialog
.NET Desktop feedback