如何:使用 SaveFileDialog 组件保存文件

https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/sfezx97z(v%3dvs.100)

用户可以使用 SaveFileDialog 组件浏览文件系统并选择要保存的文件。 该对话框返回用户在对话框中选定的文件的路径和名称。 不过,您必须编写代码才能真正地将文件写入磁盘。

使用 SaveFileDialog 组件保存文件

  • 显示**“保存文件”**对话框并调用一个方法保存用户选定的文件。

    使用 SaveFileDialog 组件的 OpenFile 方法保存文件。 此方法提供了一个可以写入的 Stream 对象。

    下面的示例使用 DialogResult 属性获取文件的名称,并使用 OpenFile 方法保存文件。 OpenFile 方法提供了可以写入文件的流。

    在下面的示例中,有一个分配了图像的 Button 控件。 单击该按钮时,将使用一个允许 .gif、.jpeg 和 .bmp 类型文件的筛选器实例化 SaveFileDialog 组件。 如果在“保存文件”对话框中选定了此类型的文件,那么将保存按钮的图像。

    安全说明安全说明

    若要获取或设置 FileName 属性,程序集需要具有由 System.Security.Permissions.FileIOPermission 类授予的特权级别。 如果在部分信任的上下文中运行,则该进程可能会因特权不足而引发一个异常。 有关更多信息,请参见代码访问安全性基础知识。

    该示例假设窗体上有一个 Button 控件,该控件的 Image 属性设置为 .gif、.jpeg 或 .bmp 类型的文件。

     提示

    FileDialog 类的 FilterIndex 属性(根据继承的特性,该属性属于 SaveFileDialog 类)使用从 1 开始的索引。 如果您通过编写代码以特定格式保存数据(例如,以纯文本而不是二进制格式保存文件),那么这一点很重要。 以下示例介绍了该属性。

    C#复制

    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();
       }
    }
    

    (Visual C# 和 Visual C++)在窗体的构造函数中放置以下代码来注册事件处理程序。

    C#复制

    this.button2.Click += new System.EventHandler(this.button2_Click);
    

    有关编写文件流的更多信息,请参见 FileStream.BeginWrite 方法和 FileStream.Write 方法。

     提示

    某些控件,如 RichTextBox 控件,具有保存文件的能力。 有关更多信息,请参见 MSDN 联机库技术文章 Essential Code for Windows Forms Dialog Boxes(Windows 窗体对话框的基本代码)的“SaveFileDialog Component”(SaveFileDialog 组件)部分。

SaveFileDialog 类

https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.savefiledialog?redirectedfrom=MSDN&view=netframework-4.8

定义

命名空间:

System.Windows.Forms

程序集:

System.Windows.Forms.dll

提示用户选择文件的保存位置。 此类不能被继承。

C#复制

public sealed class SaveFileDialog : System.Windows.Forms.FileDialog

继承

Object 

MarshalByRefObject 

Component 

CommonDialog 

FileDialog 

SaveFileDialog

示例

下面的代码示例演示如何创建SaveFileDialog、设置成员、 ShowDialog使用方法调用对话框, 以及保存当前文件。 该示例需要一个带有按钮的窗体。

C#复制

private void button1_Click(object sender, System.EventArgs e)
 {
     Stream myStream ;
     SaveFileDialog saveFileDialog1 = new SaveFileDialog();
 
     saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"  ;
     saveFileDialog1.FilterIndex = 2 ;
     saveFileDialog1.RestoreDirectory = true ;
 
     if(saveFileDialog1.ShowDialog() == DialogResult.OK)
     {
         if((myStream = saveFileDialog1.OpenFile()) != null)
         {
             // Code to write the stream goes here.
             myStream.Close();
         }
     }
 }

注解

此类可以打开和覆盖现有文件, 也可以创建新的文件。

此类的大部分功能都可在FileDialog类中找到。

构造函数

SaveFileDialog()

初始化此类的新实例。

属性

AddExtension

获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。

(继承自 FileDialog)
AutoUpgradeEnabled

获取或设置一个值,该值指示此 FileDialog 实例在 Windows Vista 上运行时是否应自动升级外观和行为。

(继承自 FileDialog)
CanRaiseEvents

获取一个指示组件是否可以引发事件的值。

(继承自 Component)
CheckFileExists

获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。

(继承自 FileDialog)
CheckPathExists

获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。

(继承自 FileDialog)
Container

获取 IContainer,它包含 Component。

(继承自 Component)
CreatePrompt

获取或设置一个值,该值指示如果用户指定不存在的文件,对话框是否提示用户允许创建该文件。

CustomPlaces

获取此 FileDialog 实例的自定义空间的集合。

(继承自 FileDialog)
DefaultExt

获取或设置默认文件扩展名。

(继承自 FileDialog)
DereferenceLinks

获取或设置一个值,该值指示对话框是否返回快捷方式引用的文件的位置,或者是否返回快捷方式 (.lnk) 的位置。

(继承自 FileDialog)
DesignMode

获取一个值,用以指示 Component 当前是否处于设计模式。

(继承自 Component)
Events

获取附加到此 Component 的事件处理程序的列表。

(继承自 Component)
FileName

获取或设置一个包含在文件对话框中选定的文件名的字符串。

(继承自 FileDialog)
FileNames

获取对话框中所有选定文件的文件名。

(继承自 FileDialog)
Filter

获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。

(继承自 FileDialog)
FilterIndex

获取或设置文件对话框中当前选定筛选器的索引。

(继承自 FileDialog)
InitialDirectory

获取或设置文件对话框显示的初始目录。

(继承自 FileDialog)
Instance

获取应用程序的 Win32 实例句柄。

(继承自 FileDialog)
Options

获取用来初始化 FileDialog 的值。

(继承自 FileDialog)
OverwritePrompt

获取或设置一个值,该值指示如果用户指定的文件名已存在,Save As 对话框是否显示警告。

RestoreDirectory

获取或设置一个值,该值指示该对话框在关闭前是否将目录还原为之前选定的目录。

(继承自 FileDialog)
ShowHelp

获取或设置一个值,该值指示文件对话框中是否显示“帮助”按钮。

(继承自 FileDialog)
Site

获取或设置 Component 的 ISite。

(继承自 Component)
SupportMultiDottedExtensions

获取或设置对话框是否支持显示和保存具有多个文件扩展名的文件。

(继承自 FileDialog)
Tag

获取或设置一个对象,该对象包含控件的数据。

(继承自 CommonDialog)
Title

获取或设置文件对话框标题。

(继承自 FileDialog)
ValidateNames

获取或设置一个值,该值指示对话框是否只接受有效的 Win32 文件名。

(继承自 FileDialog)

方法

CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(继承自 MarshalByRefObject)
Dispose()

释放由 Component 使用的所有资源。

(继承自 Component)
Dispose(Boolean)

释放由 Component 占用的非托管资源,还可以另外再释放托管资源。

(继承自 Component)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetLifetimeService()

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetService(Type)

返回一个对象,该对象表示由 Component 或它的 Container 提供的服务。

(继承自 Component)
GetType()

获取当前实例的 Type。

(继承自 Object)
HookProc(IntPtr, Int32, IntPtr, IntPtr)

定义要重写的通用对话框挂钩过程,以便向文件对话框添加特定功能。

(继承自 FileDialog)
InitializeLifetimeService()

获取生存期服务对象来控制此实例的生存期策略。

(继承自 MarshalByRefObject)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。

(继承自 MarshalByRefObject)
OnFileOk(CancelEventArgs)

引发 FileOk 事件。

(继承自 FileDialog)
OnHelpRequest(EventArgs)

引发 HelpRequest 事件。

(继承自 CommonDialog)
OpenFile()

打开用户选定的具有读/写权限的文件。

OwnerWndProc(IntPtr, Int32, IntPtr, IntPtr)

定义要重写的所有者窗口过程,以便向通用对话框添加特定功能。

(继承自 CommonDialog)
Reset()

将所有对话框选项重置为默认值。

RunDialog(IntPtr)

指定通用对话框。

(继承自 FileDialog)
ShowDialog()

用默认的所有者运行通用对话框。

(继承自 CommonDialog)
ShowDialog(IWin32Window)

运行具有指定所有者的通用对话框。

(继承自 CommonDialog)
ToString()

提供此对象的字符串版本。

(继承自 FileDialog)

事件

Disposed

当通过调用 Dispose() 方法释放组件时发生。

(继承自 Component)
FileOk

当用户单击文件对话框中的“打开”或 “保存”按钮时发生。

(继承自 FileDialog)
HelpRequest

当用户单击通用对话框中的“帮助”按钮时发生。

(继承自 CommonDialog)

你可能感兴趣的:(Winform,C#)