Share via


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 de segurançaObservaçã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çãoObservaçã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çãoObservaçã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.

Consulte também

Referência

SaveFileDialog

Outros recursos

SaveFileDialog Component (Windows Forms)