Skip to content

系统对话框

系统自带的一些对话框类:

  • OpenFileDialog:打开文件对话框
  • SaveFileDialog:保存文件对话框
  • FolderBrowserDialog:目录选择对话框
  • ColorDialog:颜色选择对话框
  • FontDialog:字体选择对括框

1.OpenFileDialog

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

csharp
public sealed class OpenFileDialog : System.Windows.Forms.FileDialog

继承:Object=》MarshalByRefObject=》Component=》CommonDialog=》FileDialog=》OpenFileDialog

下面实例可以自行添加Button,执行以下逻辑

c#
var fileContent = string.Empty;
var filePath = string.Empty;

using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
    openFileDialog.InitialDirectory = "c:\\";
    openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    openFileDialog.FilterIndex = 2;
    openFileDialog.RestoreDirectory = true;

    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        // 获取选中文件路径
        filePath = openFileDialog.FileName;

        // 获取选中文件内容
        var fileStream = openFileDialog.OpenFile();

        using (StreamReader reader = new StreamReader(fileStream))
        {
            fileContent = reader.ReadToEnd();
        }
    }
}

MessageBox.Show(fileContent, "File Content at path: " + filePath, MessageBoxButtons.OK);

1.1 构造函数

构造函数重载描述
OpenFileDialog()初始化 OpenFileDialog 类的实例。

1.2 属性

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

1.3 方法

方法描述
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)

1.4 事件

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

2.SaveFileDialog

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

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

继承继承Object=>MarshalByRefObject=>Component=>CommonDialog=>FileDialog=>SaveFileDialog

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

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

2.1 构造函数

构造函数重载描述
SaveFileDialog()初始化此类的新实例。

2.2 属性

属性描述
AddExtension获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。(继承自 FileDialog)
AddToRecent获取或设置一个值,该值指示对话框是将打开的文件还是保存到最近列表。(继承自 FileDialog)
AutoUpgradeEnabled获取或设置一个值,该值指示此 FileDialog 实例在 Windows Vista 上运行时是否应自动升级外观和行为。(继承自 FileDialog)
CanRaiseEvents获取一个指示组件是否可以引发事件的值。(继承自 Component)
CheckFileExists获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。(继承自 FileDialog)
CheckPathExists获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。(继承自 FileDialog)
CheckWriteAccess获取或设置一个值,该值指示对话框是否验证指定文件的创建是否成功。 如果未设置此标志,则调用应用程序必须处理创建项时发现的错误,例如拒绝访问。
ClientGuid获取或设置要与此对话状态关联的 GUID。 通常情况下,状态(如最后访问的文件夹)和对话框的位置及大小将根据可执行文件的名称持久保存。 通过指定 GUID,一个应用程序对于同一应用程序中不同版本的对话框(例如,导入的对话框和打开的对话框),可以具有不同的持久状态。如果应用程序未使用视觉样式或如果 AutoUpgradeEnabled 设置为 false,则此功能不可用。(继承自 FileDialog)
Container获取包含 IContainerComponent。(继承自 Component)
CreatePrompt获取或设置一个值,该值指示如果用户指定不存在的文件,对话框是否提示用户允许创建该文件。
CustomPlaces获取此 FileDialog 实例的自定义空间的集合。(继承自 FileDialog)
DefaultExt获取或设置默认文件扩展名。(继承自 FileDialog)
DereferenceLinks获取或设置一个值,该值指示对话框是否返回快捷方式引用的文件的位置,或者是否返回快捷方式 (.lnk) 的位置。(继承自 FileDialog)
DesignMode获取一个值,用以指示 Component 当前是否处于设计模式。(继承自 Component)
Events获取附加到此 Component 的事件处理程序的列表。(继承自 Component)
ExpandedMode获取或设置一个值,该值指示对话框是否始终在扩展模式下打开。
FileName获取或设置一个包含在文件对话框中选定的文件名的字符串。(继承自 FileDialog)
FileNames获取对话框中所有选定文件的文件名。(继承自 FileDialog)
Filter获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。(继承自 FileDialog)
FilterIndex获取或设置文件对话框中当前选定筛选器的索引。(继承自 FileDialog)
InitialDirectory获取或设置文件对话框显示的初始目录。(继承自 FileDialog)
Instance获取应用程序的 Win32 实例句柄。(继承自 FileDialog)
OkRequiresInteraction获取或设置一个值,该值指示是否禁用对话框的“确定”按钮,直到用户导航视图或编辑文件名 ((如果适用) )。(继承自 FileDialog)
Options获取用来初始化 FileDialog 的值。(继承自 FileDialog)
OverwritePrompt获取或设置一个值,该值指示如果用户指定的文件名已存在,Save As 对话框是否显示警告。
RestoreDirectory获取或设置一个值,该值指示该对话框在关闭前是否将目录还原为之前选定的目录。(继承自 FileDialog)
ShowHelp获取或设置一个值,该值指示文件对话框中是否显示“帮助”按钮。(继承自 FileDialog)
ShowHiddenFiles获取或设置一个值,该值指示对话框是否显示隐藏文件和系统文件。(继承自 FileDialog)
ShowPinnedPlaces获取或设置一个值,该值指示是否显示视图导航窗格中默认显示的项。(继承自 FileDialog)
Site获取或设置 ComponentISite。(继承自 Component)
SupportMultiDottedExtensions获取或设置对话框是否支持显示和保存具有多个文件扩展名的文件。(继承自 FileDialog)
Tag获取或设置一个对象,该对象包含控件的数据。(继承自 CommonDialog)
Title获取或设置文件对话框标题。(继承自 FileDialog)
ValidateNames获取或设置一个值,该值指示对话框是否只接受有效的 Win32 文件名。(继承自 FileDialog)

2.3 方法

方法描述
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)

2.4 事件

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

3.FolderBrowserDialog

提示用户选择文件夹。 此类不能被继承。

csharp
public sealed class FolderBrowserDialog : System.Windows.Forms.CommonDialog

继承:Object=》MarshalByRefObject=》Component=》CommonDialog=》FolderBrowserDialog

FolderBrowserDialog

4.ColorDialog

ColorDialog

5.FontDialog

FontDialog

MIT Licensed