Nasıl yapılır: SaveFileDialog Bileşenini Kullanarak Dosyaları Kaydetme

Bileşen, SaveFileDialog kullanıcıların dosya sistemine göz atarak kaydedilebilir dosyaları seçmelerini sağlar. İletişim kutusu, kullanıcının iletişim kutusunda seçmiş olduğu dosyanın yolunu ve adını döndürür. Ancak, dosyaları diske yazmak için kodu yazmanız gerekir.

SaveFileDialog bileşenini kullanarak bir dosyayı kaydetmek için

  • Dosya Kaydet iletişim kutusunu görüntüleyin ve kullanıcı tarafından seçilen dosyayı kaydetmek için bir yöntem arayın.

    Dosyayı SaveFileDialog kaydetmek için OpenFile bileşenin yöntemini kullanın. Bu yöntem size Stream yazabilir bir nesnesi verir.

    Aşağıdaki örnekte dosyanın adını almak için özelliği ve dosyayı DialogResult kaydetmek için yöntemi OpenFile lanmıştır. yöntemi, OpenFile dosyayı yazmanız için bir akış sağlar.

    Aşağıdaki örnekte, görüntü atanmış Button bir denetim vardır. Düğmeye tıklarken bileşen, SaveFileDialog .gif, .jpeg ve .bmp. Dosya Kaydet iletişim kutusunda bu tür bir dosya seçilirse düğmenin görüntüsü kaydedilir.

    Önemli

    Özelliğini almak veya ayarlamak FileName için derlemeniz sınıf tarafından verilen bir ayrıcalık düzeyi System.Security.Permissions.FileIOPermission gerektirir. Kısmi güven bağlamında çalışıyorsanız, işlem yetersiz ayrıcalıklar nedeniyle bir özel durum oluşturur. Daha fazla bilgi için, bkz. Code Access Security Basics.

    Örnekte, form örneğinin özelliği .gif, .jpeg veya .bmp türünde bir dosyaya ayarlanmış bir ButtonImage denetimi olduğu varsay .bmp.

    Not

    Sınıfın özelliği (devralma nedeniyle sınıfın bir parçası) FileDialog tek tabanlı bir dizin FilterIndexSaveFileDialog kullanır. Verileri belirli bir biçimde kaydetmek için kod yazıyorsanız (örneğin, bir dosyayı düz metin veya ikili biçimde kaydetme) bu önemlidir. Bu özellik aşağıdaki örnekte öne gösterilmiştir.

    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# ve Visual C++) Olay işleyicisini kaydetmek için formun oluşturucus una aşağıdaki kodu ekleyin.

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

    Dosya akışları yazma hakkında daha fazla bilgi için bkz. BeginWrite ve Write .

    Not

    Denetim gibi belirli RichTextBox denetimlerin dosyaları kaydetme özelliği vardır.

Ayrıca bkz.