Dela via


Gör så här: Spara filer med hjälp av SaveFileDialog-komponenten

Med komponenten SaveFileDialog kan användarna bläddra i filsystemet och välja vilka filer som ska sparas. Dialogrutan returnerar sökvägen och namnet på filen som användaren har valt i dialogrutan. Du måste dock skriva koden för att faktiskt skriva filerna till disken.

Spara en fil med hjälp av SaveFileDialog-komponenten

  • Visa dialogrutan Spara fil och anropa en metod för att spara filen som användaren har valt.

    Använd SaveFileDialog komponentens OpenFile-metod för att spara filen. Den här metoden ger dig ett Stream objekt som du kan skriva till.

    I exemplet nedan används egenskapen DialogResult för att hämta namnet på filen och metoden OpenFile för att spara filen. Med metoden OpenFile får du en ström att skriva filen till.

    I exemplet nedan finns det en Button kontroll med en avbildning tilldelad till den. När du klickar på knappen instansieras en SaveFileDialog komponent med ett filter som tillåter filer av typen .gif, .jpeg och .bmp. Om en fil av den här typen är markerad i dialogrutan Spara fil sparas knappens bild.

    Viktig

    För att hämta eller ange egenskapen FileName kräver din sammansättning en behörighetsnivå som beviljats av klassen System.Security.Permissions.FileIOPermission. Om processen körs i en begränsad förtroendekontext kan ett undantag utlösas på grund av otillräcklig behörighet. Mer information finns i Grunderna för kodåtkomstsäkerhet.

    Exemplet förutsätter att formuläret har en Button-kontroll med egenskapen Image inställd på en fil av typen .gif, .jpeg eller .bmp.

    Notera

    FileDialog-klassens egenskap FilterIndex (som på grund av arv ingår i klassen SaveFileDialog) använder ett enbaserat index. Detta är viktigt om du skriver kod för att spara data i ett visst format (till exempel om du sparar en fil i oformaterad text jämfört med binärt format). Den här egenskapen visas i exemplet nedan.

    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# och Visual C++) Placera följande kod i formulärets konstruktor för att registrera händelsehanteraren.

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

    Mer information om hur du skriver filströmmar finns i BeginWrite och Write.

    Not

    Vissa kontroller, till exempel RichTextBox kontroll, har möjlighet att spara filer.

Se även