Como: Salvar arquivos usando o componente SaveFileDialog
O SaveFileDialog componente permite que os usuários naveguem do sistema de arquivos e selecione os arquivos sejam salvos. A caixa de diálogo retorna o caminho e o nome do arquivo que o usuário tiver selecionado na caixa de diálogo. No entanto, você deve escrever o código realmente gravar os arquivos no disco.
Para salvar um arquivo usando o componente SaveFileDialog
Exibição de Salvar o arquivo caixa de diálogo e chamada de um método para salvar o arquivo selecionado pelo usuário.
Use o SaveFileDialog do componente OpenFile método para salvar o arquivo. Esse método lhe oferece uma Stream objeto, você pode escrever para.
O exemplo abaixo usa o DialogResult a propriedade para obter o nome do arquivo e o OpenFile método para salvar o arquivo. O OpenFile método lhe oferece um fluxo para gravar o arquivo.
No exemplo abaixo, há um Button o controle com uma imagem atribuída para o proprietário. Quando você clica no botão, uma SaveFileDialog componente for instanciado com um filtro que permite que os arquivos do tipo GIF,. JPEG e. bmp. Se um arquivo desse tipo é selecionado na caixa de diálogo Salvar arquivo, a imagem do botão é salvo.
Observação sobre segurança Para obter ou definir o FileName propriedade, o assembly requer um nível de privilégio concedido pela System.Security.Permissions.FileIOPermission classe. Se você estiver executando em um contexto parcialmente confiável, o código pode lançar uma exceção devido a privilégios insuficientes. Para obter mais informações, consulte Code Access Security Basics.
O exemplo supõe que o formulário tem um Button de controle com seu Image propriedade definida como um arquivo do tipo GIF,. JPEG ou. bmp.
Observação O FileDialog da classe FilterIndex propriedade (que, devido a herança, faz parte o SaveFileDialog classe) usa um índice baseado em um. Isso é importante se você estiver escrevendo código para salvar os dados em um formato específico (por exemplo, salvar um arquivo como texto sem formatação em vez de formato binário). Esta propriedade é apresentada com o exemplo a seguir.
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++) coloque o seguinte código no construtor do formulário para registrar o manipulador de eventos.
this.button2.Click += new System.EventHandler(this.button2_Click);
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
Para obter mais informações sobre como escrever fluxos de arquivo, consulte O método de FileStream.BeginWrite e O método de FileStream.Write.
Observação Certos controles, como o RichTextBox controle, têm a capacidade de salvar arquivos. Para obter mais informações, consulte "savefiledialog Component" seção do artigo técnico MSDN Online Library, Essencial código para formulários de caixas de diálogo Windows.