Freigeben über


Vorgehensweise: Speichern von Dateien mithilfe der SaveFileDialog-Komponente

Mit der SaveFileDialog Komponente können Benutzer das Dateisystem durchsuchen und dateien auswählen, die gespeichert werden sollen. Das Dialogfeld gibt den Pfad und den Namen der Datei zurück, die der Benutzer im Dialogfeld ausgewählt hat. Sie müssen jedoch den Code schreiben, um die Dateien tatsächlich auf den Datenträger zu schreiben.

So speichern Sie eine Datei mithilfe der SaveFileDialog-Komponente

  • Zeigen Sie das Dialogfeld "Datei speichern " an, und rufen Sie eine Methode auf, um die vom Benutzer ausgewählte Datei zu speichern.

    Verwenden Sie die Methode der SaveFileDialog Komponente OpenFile , um die Datei zu speichern. Mit dieser Methode erhalten Sie ein Stream Objekt, in das Sie schreiben können.

    Im folgenden Beispiel wird die DialogResult Eigenschaft verwendet, um den Namen der Datei abzurufen, und die OpenFile Methode zum Speichern der Datei. Die Methode OpenFile gibt Ihnen einen Datenstrom, um die Datei zu schreiben.

    Im folgenden Beispiel ist ein Button Steuerelement mit einem ihm zugewiesenen Bild vorhanden. Wenn Sie auf die Schaltfläche klicken, wird eine SaveFileDialog Komponente mit einem Filter instanziiert, der Dateien vom Typ .gif, .jpeg und .bmpzulässt. Wenn eine Datei dieses Typs im Dialogfeld "Datei speichern" ausgewählt ist, wird das Bild der Schaltfläche gespeichert.

    Von Bedeutung

    Um die FileName Eigenschaft abzurufen oder festzulegen, erfordert Ihre Assembly eine Berechtigungsstufe, die von der System.Security.Permissions.FileIOPermission Klasse gewährt wird. Wenn Sie in einem teilweise vertrauenswürdigen Kontext ausgeführt werden, kann der Prozess eine Ausnahme aufgrund unzureichender Berechtigungen auslösen. Weitere Informationen finden Sie unter Code Access Security Basics.

    Im Beispiel wird davon ausgegangen, dass das Formular über ein Button Steuerelement verfügt, dessen Image Eigenschaft auf eine Datei vom Typ .gif, .jpeg oder .bmpfestgelegt ist.

    Hinweis

    Die FileDialog Eigenschaft der Klasse FilterIndex (die aufgrund der Vererbung Teil der SaveFileDialog Klasse ist) verwendet einen 1-basierten Index. Dies ist wichtig, wenn Sie Code zum Speichern von Daten in einem bestimmten Format schreiben (z. B. Speichern einer Datei im Nur-Text-Format und binärformat). Diese Eigenschaft wird im folgenden Beispiel vorgestellt.

    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# und Visual C++) Platzieren Sie den folgenden Code im Konstruktor des Formulars, um den Ereignishandler zu registrieren.

    this.button2.Click += new System.EventHandler(this.button2_Click);
    
    this->button2->Click += gcnew
        System::EventHandler(this, &Form1::button2_Click);
    

    Weitere Informationen zum Schreiben von Dateidatenströmen finden Sie unter BeginWrite und Write.

    Hinweis

    Bestimmte Steuerelemente, z. B. das RichTextBox Steuerelement, haben die Möglichkeit, Dateien zu speichern.

Siehe auch