Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il componente SaveFileDialog consente agli utenti di esplorare il file system e selezionare i file da salvare. La finestra di dialogo restituisce il percorso e il nome del file selezionato dall'utente nella finestra di dialogo. Tuttavia, è necessario scrivere il codice per scrivere effettivamente i file su disco.
Per salvare un file usando il componente SaveFileDialog
Visualizzare la finestra di dialogo Salva file e chiamare un metodo per salvare il file selezionato dall'utente.
Usare il metodo SaveFileDialog del componente OpenFile per salvare il file. Questo metodo fornisce un oggetto Stream in cui è possibile scrivere.
Nell'esempio seguente viene utilizzata la proprietà DialogResult per ottenere il nome del file e il metodo OpenFile per salvare il file. Il metodo OpenFile fornisce un flusso in cui scrivere il file.
Nell'esempio seguente è presente un controllo Button con un'immagine assegnata. Cliccando sul pulsante, viene istanziato un componente SaveFileDialog con un filtro che consente file di tipo .gif, .jpeg e .bmp. Se nella finestra di dialogo Salva file è selezionato un file di questo tipo, l'immagine del pulsante viene salvata.
Importante
Per ottenere o modificare la proprietà FileName, l'assembly richiede un livello di privilegio concesso dalla classe System.Security.Permissions.FileIOPermission. Se si esegue in un contesto a fiducia parziale, il processo potrebbe generare un'eccezione a causa di privilegi insufficienti. Per altre informazioni, vedere Nozioni di Base sulla Sicurezza dell'Accesso al Codice.
Nell'esempio si presuppone che il form abbia un controllo Button con la relativa proprietà Image impostata su un file di tipo .gif, .jpeg o .bmp.
Annotazioni
La proprietà FileDialog della classe FilterIndex (che, a causa dell'ereditarietà, fa parte della classe SaveFileDialog) usa un indice in base uno. Questo aspetto è importante se si scrive codice per salvare i dati in un formato specifico, ad esempio salvando un file in formato testo normale o binario. Questa proprietà è in primo piano nell'esempio seguente.
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# e Visual C++) Inserire il codice seguente nel costruttore del modulo per registrare il gestore eventi.
this.button2.Click += new System.EventHandler(this.button2_Click);
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
Per altre informazioni sulla scrittura di flussi di file, vedere BeginWrite e Write.
Annotazioni
Alcuni controlli, ad esempio il controllo RichTextBox, hanno la possibilità di salvare i file.
Vedere anche
- SaveFileDialog
- del componente SaveFileDialog
.NET Desktop feedback