C# 第六章『交互式图形界面』◆第4节:FileDialog类 、OpenFileDialog类、SaveFileDialog类、示例

        一、FileDialog 类 

FileDialog 类https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.filedialog?view=netframework-4.0

        1、定义

  • 命名空间:System.Windows.Forms
  • 程序集:System.Windows.Forms.dll
  • 继承:Object→MarshalByRefObject→Component→CommonDialog→FileDialog
  • 派生:System.Windows.Forms.OpenFileDialogSystem.Windows.Forms.SaveFileDialog
public abstract class FileDialog : System.Windows.Forms.CommonDialog

        FileDialog是一个抽象类,其中包含该类和SaveFileDialog类的常见行为OpenFileDialog。 它不会直接使用,而是包含这两个类的常见行为。 无法创建 . 的 FileDialog实例。 尽管该类被声明为公共类,但不能从它继承,因为它包含内部抽象方法。 若要创建对话框以选择或保存文件,请使用 OpenFileDialog 或 SaveFileDialog。
        FileDialog 是模式对话框;因此,当显示时,它会阻止应用程序的其余部分,直到用户选择了文件。 当对话框以模式显示时,除了对话框上的对象之外,没有输入 (键盘或鼠标单击) 。 程序必须隐藏或关闭对话框 (通常响应某些用户操作) ,然后才能输入调用程序。

         备注:如果应用程序的用户更改了 FileDialog文件夹中的文件夹,则应用程序的当前工作目录将设置为在指定 FileDialog的位置。 若要防止这种情况,请将 RestoreDirectory 属性设置为 true。

        2、FileDialog 类的字段

EventFileOk  具有 FileOk 事件。

        3、FileDialog 类的属性

AddExtension  获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。
AutoUpgradeEnabled  获取或设置一个值,该值指示此FileDialog实例在 Windows Vista 上运行时是否应自动升级外观和行为。
CanRaiseEvents  获取一个指示组件是否可以引发事件的值。(继承自 Component)
CheckFileExists  获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。
CheckPathExists  获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。
Container  获取包含 IContainer 的 Component。(继承自 Component)
CustomPlaces  获取此 FileDialog 实例的自定义空间的集合。
DefaultExt  获取或设置默认文件扩展名。
DereferenceLinks  获取或设置一个值,该值指示对话框是否返回快捷方式引用的文件的位置,或者是否返回快捷方式 (.lnk) 的位置。
DesignMode  获取一个值,用以指示 Component 当前是否处于设计模式。(继承自 Component)
Events  获取附加到此 Component 的事件处理程序的列表。(继承自 Component)
FileName  获取或设置一个包含在文件对话框中选定的文件名的字符串。
FileNames  获取对话框中所有选定文件的文件名。
Filter  获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
FilterIndex  获取或设置文件对话框中当前选定筛选器的索引。
InitialDirectory  获取或设置文件对话框显示的初始目录。
Instance  获取应用程序的 Win32 实例句柄。
Options  获取用来初始化 FileDialog 的值。
RestoreDirectory  获取或设置一个值,该值指示该对话框在关闭前是否将目录还原为之前选定的目录。
ShowHelp  获取或设置一个值,该值指示文件对话框中是否显示“帮助”按钮。
Site  获取或设置 Component 的 ISite。(继承自 Component)
SupportMultiDottedExtensions  获取或设置对话框是否支持显示和保存具有多个文件扩展名的文件。
Tag  获取或设置一个对象,该对象包含控件的数据。(继承自 CommonDialog)
Title  获取或设置文件对话框标题。
ValidateNames  获取或设置一个值,该值指示对话框是否只接受有效的 Win32 文件名。

        4、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)  定义要重写的通用对话框挂钩过程,以便向文件对话框添加特定功能。
InitializeLifetimeService()  获取生存期服务对象来控制此实例的生存期策略。(继承自 MarshalByRefObject)
MemberwiseClone()  创建当前 Object 的浅表副本。(继承自 Object)
MemberwiseClone(Boolean)  创建当前 MarshalByRefObject 对象的浅表副本。(继承自 MarshalByRefObject)
OnFileOk(CancelEventArgs)  引发 FileOk 事件。
OnHelpRequest(EventArgs)  引发 HelpRequest 事件。

        4、FileDialog 类的事件

Disposed  在通过调用 Dispose() 方法释放组件时发生。(继承自 Component)
FileOk  当用户单击文件对话框中的“打开”或 “保存”按钮时发生。
HelpRequest  当用户单击通用对话框中的“帮助”按钮时发生。(继承自 CommonDialog)

        二、OpenFileDialog 类

OpenFileDialog 类https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.openfiledialog?view=netframework-4.0

        1、定义

        显示一个标准对话框,提示用户打开文件。 此类不能被继承。

  • 命名空间:System.Windows.Forms
  • 程序集:System.Windows.Forms.dll
  • 继承:Object→MarshalByRefObject→Component→CommonDialog→FileDialog→OpenFileDialog
public sealed class OpenFileDialog : System.Windows.Forms.FileDialog

        2、OpenFileDialog 类的构造函数

OpenFileDialog()  初始化 OpenFileDialog 类的实例。

        3、OpenFileDialog 类的属性

AddExtension 获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。(继承自 FileDialog)
AddToRecent  (继承自 FileDialog)
AutoUpgradeEnabled  获取或设置一个值,该值指示此FileDialog实例在 Windows Vista 上运行时是否应自动升级外观和行为。(继承自 FileDialog)
CanRaiseEvents  获取一个指示组件是否可以引发事件的值。(继承自 Component)
CheckFileExists  获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。
CheckPathExists  获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。(继承自 FileDialog)
ClientGuid  获取或设置要与此对话框状态关联的 GUID。 通常情况下,状态(如最后访问的文件夹)和对话框的位置及大小将根据可执行文件的名称持久保存。 通过指定 GUID,一个应用程序对于同一应用程序中不同版本的对话框(例如,导入的对话框和打开的对话框),可以具有不同的持久状态。如果应用程序未使用视觉样式或如果 AutoUpgradeEnabled 设置为 false,则此功能不可用。(继承自 FileDialog)
Container  获取包含 IContainer 的 Component。(继承自 Component)
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)
Multiselect  获取或设置一个值,该值指示对话框是否允许选择多个文件。
OkRequiresInteraction  (继承自 FileDialog)
Options  获取用来初始化 FileDialog 的值。(继承自 FileDialog)
ReadOnlyChecked  获取或设置一个值,该值指示是否选定只读复选框。
RestoreDirectory  获取或设置一个值,该值指示该对话框在关闭前是否将目录还原为之前选定的目录。(继承自 FileDialog)
SafeFileName  获取对话框中所选文件的文件名和扩展名。 文件名不包含路径。
SafeFileNames  获取对话框中所有选定文件的文件名和扩展名的数组。 文件名不包含路径。
ShowHelp  获取或设置一个值,该值指示文件对话框中是否显示“帮助”按钮。(继承自 FileDialog)
ShowHiddenFiles  (继承自 FileDialog)
ShowPinnedPlaces  (继承自 FileDialog)
ShowReadOnly  获取或设置一个值,该值指示对话框是否包含只读复选框。
Site  获取或设置 Component 的 ISite。(继承自 Component)
SupportMultiDottedExtensions  获取或设置对话框是否支持显示和保存具有多个文件扩展名的文件。(继承自 FileDialog)
Tag  获取或设置一个对象,该对象包含控件的数据。(继承自 CommonDialog)
Title  获取或设置文件对话框标题。(继承自 FileDialog)
ValidateNames  获取或设置一个值,该值指示对话框是否只接受有效的 Win32 文件名。(继承自 FileDialog)

         4、OpenFileDialog 类的方法

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()  打开用户选定的具有只读权限的文件。 该文件由 FileName 属性指定。
OwnerWndProc(IntPtr, Int32, IntPtr, IntPtr)  定义要重写的所有者窗口过程,以便向通用对话框添加特定功能。(继承自 CommonDialog)
Reset()  将所有属性重新设置为其默认值。
RunDialog(IntPtr)  指定通用对话框。(继承自 FileDialog)
ShowDialog()  用默认的所有者运行通用对话框。(继承自 CommonDialog)
ShowDialog(IWin32Window)  运行具有指定所有者的通用对话框。(继承自 CommonDialog)
ToString()  提供此对象的字符串版本。(继承自 FileDialog)

        5、OpenFileDialog 类的事件

Disposed  在通过调用 Dispose() 方法释放组件时发生。(继承自 Component)
FileOk  当用户单击文件对话框中的“打开”或 “保存”按钮时发生。(继承自 FileDialog)
HelpRequest  当用户单击通用对话框中的“帮助”按钮时发生。(继承自 CommonDialog)

         三、SaveFileDialog 类

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

        1、定义

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

  • 命名空间:System.Windows.Forms
  • 程序集:System.Windows.Forms.dll
  • 继承:Object→MarshalByRefObject→Component→CommonDialog→FileDialog→SaveFileDialog
public sealed class SaveFileDialog : System.Windows.Forms.FileDialog

        2、SaveFileDialog 类的构造函数

SaveFileDialog()  初始化此类的新实例。

        3、SaveFileDialog 类的属性

AddExtension  获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。(继承自 FileDialog)
AddToRecent  (继承自 FileDialog)
AutoUpgradeEnabled  获取或设置一个值,该值指示此FileDialog实例在 Windows Vista 上运行时是否应自动升级外观和行为。(继承自 FileDialog)
CanRaiseEvents  获取一个指示组件是否可以引发事件的值。(继承自 Component)
CheckFileExists  获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。(继承自 FileDialog)
CheckPathExists  获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。(继承自 FileDialog)
ClientGuid  获取或设置要与此对话框状态关联的 GUID。 通常情况下,状态(如最后访问的文件夹)和对话框的位置及大小将根据可执行文件的名称持久保存。 通过指定 GUID,一个应用程序对于同一应用程序中不同版本的对话框(例如,导入的对话框和打开的对话框),可以具有不同的持久状态。如果应用程序未使用视觉样式或如果 AutoUpgradeEnabled 设置为 false,则此功能不可用。(继承自 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)
OkRequiresInteraction  (继承自 FileDialog)
Options  获取用来初始化 FileDialog 的值。(继承自 FileDialog)
OverwritePrompt  获取或设置一个值,该值指示如果用户指定的文件名已存在,Save As 对话框是否显示警告。
RestoreDirectory 

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

假如用户在搜索文件的过程中更改了目录,那么,如果对话框将当前目录还原为之前选定的目录,则为 true;否则为 false。 默认值是 false。

ShowHelp  获取或设置一个值,该值指示文件对话框中是否显示“帮助”按钮。(继承自 FileDialog)
ShowHiddenFiles  (继承自 FileDialog)
ShowPinnedPlaces  (继承自 FileDialog)
Site  获取或设置 Component 的 ISite。(继承自 Component)
SupportMultiDottedExtensions  获取或设置对话框是否支持显示和保存具有多个文件扩展名的文件。(继承自 FileDialog)
Tag  获取或设置一个对象,该对象包含控件的数据。(继承自 CommonDialog)
Title  获取或设置文件对话框标题。(继承自 FileDialog)
ValidateNames  获取或设置一个值,该值指示对话框是否只接受有效的 Win32 文件名。(继承自 FileDialog)

        4、SaveFileDialog 类的方法

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)  定义要重写的所有者窗口过程,以便向通用对话框添加特定功能。
Reset()  将所有对话框选项重置为默认值。(继承自 CommonDialog)

        5、SaveFileDialog 类的事件

Disposed  在通过调用 Dispose() 方法释放组件时发生。(继承自 Component)
FileOk  当用户单击文件对话框中的“打开”或 “保存”按钮时发生。(继承自 FileDialog)
HelpRequest  当用户单击通用对话框中的“帮助”按钮时发生。(继承自 CommonDialog)

         四、示例1

 在Form中拖入一个openFileDialog组件,

private void button1_Click(object sender, EventArgs e)
{
    openFileDialog1.ShowDialog();
}

         五、示例2

private void button1_Click(object sender, EventArgs e)
{
    if(openFileDialog1.ShowDialog()==DialogResult.OK)
    {
        textBox1.Text = openFileDialog1.FileName;
    }
}

        六、示例3

private void button1_Click(object sender, EventArgs e)
        {
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";//保存的格式为txt或任意格式
            saveFileDialog1.FilterIndex = 2;//这里就是选择Filter里第几个为默认
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                    myStream.Close();
                }
            }
        }

猜你喜欢

转载自blog.csdn.net/qq_45336030/article/details/126591708