基于.NET的Windows窗体编程之WinForms对话框


在日常开发中,有时候需要弹出对话框,供用户选择使用,如字体对话框,颜色对话框等,今天我们一些简单的小例子,简述基于.NET的Windows窗体编程中常见对话框的使用,仅供学习分享使用,如有不足之处,还请指正。

 

概述

 

在使用某些软件时,经常会看到,点击一个按钮,然后弹出对话框,让用户选择某些内容,而这些弹出的对话框所包含的内容,通常是特定的内容,如保存文件,打开文件等对话框。WinForms框架中内置的常见对话框,主要有以下几种:

  • ColorDialog,颜色选择对话框。
  • FolderBrowserDialog,文件夹浏览对话框。
  • FontDialog,字体选择对话框。
  • OpenFileDialog,打开文件对话框。
  • SaveFileDialog,保存文件对话框。

 

接下来将逐项介绍各个对话框的场景用法。

 

ColorDialog

 

ColorDialog 组件是一个预配置的对话框,允许用户从调色板中选择颜色,并将自定义颜色添加到该调色板。该对话框包含两个部分,一部分显示基本颜色,另一部分允许用户定义自定义颜色。ColorDialog对话框的关键属性如下所示:

  • Color,用于获取或设置对话框中选择的颜色。
  • AllowFullOpen,是否允许自定义颜色,如果AllowFullOpen属性为false,那么“定义自定义颜色”按钮将被禁用,用户只能使用调色板中的预定义颜色;如果AllowFullOpen属性为true,则允许用户定义自定义颜色。
  • SolidColorOnly,是否仅显示单一颜色,如果SolidColorOnly属性设置为true,则用户无法选择抖动颜色,只能选择纯色。
  • ShowDialog,所有的Dialog都需要通过此方法来显示对话框,返回DialogResult类型的值,如果点击了确定,则返回DialogResult.OK,如果点击了取消,则返回DialogResult.Cancel。
  • ShowHelp,是否显示帮助按钮,如果ShowHelp属性设置为true,对话框中会显示一个“帮助”按钮。 当用户单击“帮助”按钮时, ColorDialog 将引发组件的 HelpRequest 事件。
  • AnyColor,任何颜色,当AnyColor属性设置为 true 时,对话框将在基本颜色集中显示所有可用颜色。 

 

为了更好的演示ColorDialog的功能,首先我们在Form表单中添加一个按钮,并命名为btnColor,接下来在按钮事件btnColor_Click中创建ColorDialog,并在弹出的颜色对话框中选择颜色,并将颜色设置到Lable的背景色上,具体代码如下所示:

private void btnColor_Click(object sender, EventArgs e)
{
    ColorDialog colorDialog = new ColorDialog();
    colorDialog.AllowFullOpen = true;
    colorDialog.ShowHelp = true;
    if (colorDialog.ShowDialog() == DialogResult.OK)
    {
        this.lblContent.Text = colorDialog.Color.ToString();
        this.lblContent.BackColor = colorDialog.Color;
    }
}

运行示例,如下所示:

 

FontDialog

 

FontDialog 组件是一个预配置的对话框,主要用于选择字体。它是用于公开系统上当前安装的字体的标准 Windows 字体 对话框。默认情况下,对话框显示字体、字体样式和大小的列表框;“删除线”和“下划线”等效果的复选框;脚本的下拉列表;以及字体显示方式的示例。FontDialog字体选择对话框的关键属性,主要有以下几个:

  • Font,获取或设置对话框选择的字体,此属性设置字体、样式、大小、脚本和效果;例如 Arial, 10pt, style=Italic, Strikeout
  • Color,获取或设置对话框选择的颜色,如果没有显示颜色选择列表,则返回默认Color.Black。
  • ShowColor,字体对话框是否显示颜色选择列表,默认为false。
  • ShowApply,是否显示Apply按钮,默认为false。
  • ShowEffects,是否显示字体的效果,默认为true。

 

为了更好的演示FontDialog的功能,首先我们在Form表单中添加一个按钮,并命名为btnFont,接下来在按钮事件btnFont_Click中创建FontDialog,并在弹出的颜色对话框中选择字体,颜色,并将字体,颜色设置到Lable上,具体代码如下所示:

private void btnFont_Click(object sender, EventArgs e)
{
    FontDialog fontDialog = new FontDialog();
    fontDialog.ShowColor = true;
    fontDialog.ShowApply = true;
    fontDialog.ShowEffects = true;
    if (fontDialog.ShowDialog() == DialogResult.OK)
    {
        this.lblContent.Font = fontDialog.Font;
        this.lblContent.ForeColor = fontDialog.Color;
    }
}

运行示例,效果如下所示:

 

OpenFileDialog

 

OpenFileDialog 组件是一个预配置的对话框,它与 Windows 操作系统公开的“打开文件”对话框相同。使用OpenFileDialog,主要用于选择需要打开的文件,不过需要编写自己的文件打开逻辑。OpenFileDialog文件打开对话框的关键属性如下所示:

  • Multiselect ,设置是否可以在打开的对话框中选择多个文件。
  • ShowReadOnly,设置是否显示“以只读方式打开(R)”复选框。
  • ReadOnlyChecked, 指示“以只读方式打开(R)”复选框是否勾选。
  • ShowHiddenFiles,设置是否显示隐藏文件或系统文件。
  • ShowHelp,设置是否显示帮助按钮。
  • Title,设置弹出文件选择框的标题。
  • Filter ,属性设置当前文件名筛选器字符串,该字符串确定对话框中的“类型文件”框中显示的选项。
  • FileName,文件打开对话框选择的文件。如果Multiselect属性为true,则可以通过FileNames属性获取选择的多个文件。
  • InitialDirectory,用于设置默认打开目录。
  • DefaultExt,获取或设置文件保存对话的默认扩展名,设置是不需要带因为的点号分隔符。
  • AddExtension,用户忘记写文件后缀时是否自动添加后缀,默认为true。

 

为了更好的演示OpenFileDialog 的功能,首先我们在Form表单中添加一个按钮,并命名为btnOpenFile,接下来在按钮事件btnOpenFile_Click中创建OpenFileDialog ,并在弹出的打开文件对话框中选择文件,点击确定按钮后将文件内容显示在文件框中,具体代码如下所示:

private void btnOpenFile_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Multiselect = false;
    openFileDialog.ShowReadOnly = true;
    openFileDialog.ShowHiddenFiles = false;
    openFileDialog.Title = "选择打开的文件";
    openFileDialog.ShowHelp = true;
    openFileDialog.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        string fileName = openFileDialog.FileName;
        if (File.Exists(fileName))
        {
            string content = File.ReadAllText(fileName);
            this.txtContent.Text = content;
        }
    }
}

运行示例,如下所示:

说明,Filter字符串包含对文件过滤器的描述,格式为“文件描述|表达式”;Filter中表达式支持多个文件过滤器,格式为“文件描述1|表达式1,表达式2,表达式3”;同时Filter支持多个文件类型之间的切换,格式为“文件描述1|表达式1|文件描述2|表达式2|文件描述3|表达式3”,示例如下:

  • Text files (*.txt)|*.txt|All files (*.*)|*.*
  • Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*
  • JPEG(*.jpeg)|*.jpeg|PNG(*.png)|*.png|All files (*.*)|*.*

 

SaveFileDialog

 

SaveFileDialog 组件是一个预配置的对话框, 它与 Windows 使用的标准“保存文件”对话框相同。SaveFileDialog主要用于保存文件,不过在使用 SaveFileDialog 组件时,必须编写自己的文件保存逻辑。SaveFileDialog文件保存对话框的关键属性和OpenFileDialog非常相似。

 

为了更好的演示SaveFileDialog 的功能,首先我们在Form表单中添加一个按钮,并命名为btnSaveFile,接下来在按钮事件btnSaveFile_Click中创建SaveFileDialog ,并在弹出的文件保存对话框中选择文件,点击确定按钮后将文本框中的内容保存到文件中,具体代码如下所示:

private void btnSaveFile_Click(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    saveFileDialog.AddExtension = true;
    saveFileDialog.DefaultExt = "txt";
    saveFileDialog.Title = "选择保存的文件";
    saveFileDialog.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        string fileName = saveFileDialog.FileName;
        File.WriteAllText(fileName, this.txtContent.Text);
    }
}

运行示例,效果如下所示:

 

FolderBrowserDialog

 

FolderBrowserDialog组件是用于浏览和选择文件夹的模态对话框。它显示一个界面,用户可以浏览并选择文件夹或创建新文件夹,是 OpenFileDialog 组件的补充。所以若要选择文件,而不是文件夹,请使用 OpenFileDialog 组件。FolderBrowserDialog组件的关键属性如下所示:

  • RootFolder,确定将在对话框的树视图中显示的最顶层文件夹和任何子文件夹,它是Environment.SpecialFolder枚举类型。
  • SelectedPath ,获取对话框中所选文件夹的路径。
  • Description ,指定显示在文件夹浏览器树视图顶部的文本字符串。
  • UseDescriptionForTitle,是否将Description设置到对话框的Title。
  • ShowNewFolderButton,是否显示新增文件夹按钮。

 

为了更好的演示FolderBrowserDialog的功能,首先我们在Form表单中添加一个按钮,并命名为btnBrowser,接下来在按钮事件btnBrowser_Click中创建FolderBrowserDialog,并在弹出的文件夹浏览对话框中选择文件夹,点击确定按钮后将选择的文件夹目录显示在文本框中,具体代码如下所示:

private void btnBrowser_Click(object sender, EventArgs e)
{
    FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
    folderBrowserDialog.Description = "this is a folder browser dialog";
    folderBrowserDialog.UseDescriptionForTitle = true;
    folderBrowserDialog.RootFolder = Environment.SpecialFolder.MyDocuments;
    folderBrowserDialog.ShowNewFolderButton = true;
    if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
    {
        this.txtContent.Text = folderBrowserDialog.SelectedPath;
    }
}

运行示例,如下所示:

以上就是《基于.NET的Windows窗体编程之WinForms对话框》的全部内容,旨在抛砖引玉,一起学习,共同进步。

文章摘自:https://www.cnblogs.com/hsiang/p/20026761