当前位置:嗨网首页>书籍在线阅读

11-通用对话框

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

13.3.2 通用对话框

通用对话框控件提供了Windows系统的一些通用功能,如打开文件、保存文件、文件夹浏览、选择字体、选择颜色等,这些对话框提供执行相应任务的标准方法,使用它们将赋予应用程序公认的和熟悉的界面。通过设置每个通用对话框控件的相关属性,可以控制它们的内容。这里主要介绍OpenFileDialog、SaveFileDialog、FolderBrowserDialog、FontDialog和ColorDialog通用对话框控件,在C#的工具箱中可以找到这些对话框控件,与它们关联的封装类位于System.Windows.Forms命名空间。

通用对话框常常作为模式对话框使用,需要调用ShowDialog( )方法。

1.打开文件对话框控件OpenFileDialog

打开文件对话框控件OpenFileDialog主要用来弹出Windows中标准的“打开文件”对话框,允许用户定位文件和选择文件,指定要打开文件所在的驱动器、文件夹(目录)及其文件名、文件扩展名等。使用此控件可检查某个文件是否存在并打开该文件。如果要使用户能够选择文件夹而不是文件,请改用 FolderBrowserDialog控件。

打开文件对话框控件OpenFileDialog的常用属性如下表所示。

| 属性 | 说明 | | :----- | :----- | :----- | :----- | | Title | 用来获取或设置对话框标题,默认值为空字符串("")。如果标题为空字符串,则系统将使用默认标题:“打开” | | Filter | 用来获取或设置当前文件类型筛选器字符串,该字符串决定对话框的“文件类型”框中出现的选择内容。对于每个筛选选项,筛选器字符串都包含筛选器说明、垂直线条(|)和筛选器模式。不同筛选选项的字符串由垂直线条隔开,例如, “文本文件(.txt)|.txt|所有文件(.)|.”。还可以通过分号来分隔各种文件类型,可以将多个筛选器模式添加到筛选器中,例如,“图像文件(.BMP;.JPG;.GIF)|.BMP;.JPG; .GIF|所有文件(.)|.” | | FilterIndex | 用来获取或设置文件对话框中当前选定筛选器的索引。第一个筛选器的索引为1,默认值为1 | | InitialDirectory | 用来获取或设置文件对话框显示的初始目录,默认值为空字符串("") | | FileName | 获取或设置对话框中选定的文件名的字符串。文件名既包含文件路径,也包含扩展名。如果未选定文件,该属性将返回空字符串("") | | Multiselect | 用来获取或设置一个值,该值指示对话框是否允许选择多个文件。如果对话框允许同时选定多个文件,则该属性值为true,反之,属性值为false。默认值为false | | FileNames | 用来获取对话框中所有选定文件的文件名。每个文件名都既包含文件路径,又包含文件扩展名。如果未选定文件,该方法将返回空数组。只有Multiselect为true时,该属性才有效 | | ShowReadOnly | 用来获取或设置一个值,该值确定是否在对话框中显示只读复选框。如果对话框包含只读复选框,则属性值为true,否则属性值为false。默认值为false | | ReadOnlyChecked | 用来获取或设置一个值,该值指示是否选中只读复选框。如果选中了只读复选框,则属性值为true,反之,属性值为false。默认值为false | | RestoreDirectory | 用来获取或设置一个值,该值指示对话框在关闭前是否还原当前目录。假设用户在搜索文件的过程中更改了目录,且该属性值为 true,那么,对话框会将当前目录还原为初始值,若该属性值为 false,则不还原成初始值。默认值为 false |

OpenFileDialog 控件最常用的方法有两个:OpenFile和 ShowDialog方法。OpenFile方法用于打开用户选定的具有只读权限的文件,该文件由FileName属性指定。ShowDialog方法的作用是显示OpenFileDialog等通用对话框,其一般调用形式如下。

通用对话框对象名.ShowDialog( );

调用该方法之前,要设置好需要的所有属性。在应用程序运行时,如果单击OpenFileDialog对话框中的【确定】按钮,则返回值为 DialogResult.OK,否则返回值为DialogResult.Cancel。

将OpenFileDialog对话框添加到应用程序中有两种方式。

(1)设计方式:这是最常用的方式,即从工具箱拖放OpenFileDialog控件到应用程序窗体中。

(2)编程方式:用代码实现向应用程序中添加OpenFileDialog控件。先声明一个OpenFileDialog()类的新实例,并设置属性,然后调用ShowDialog()方法将对话框显示出来。代码如下。

OpenFileDialog dlg1 = new OpenFileDialog( );
dlg1.ShowDialog( );

2.保存文件对话框控件SaveFileDialog

SaveFileDialog 控件又称保存文件对话框,主要用来显示允许用户保存文件的对话框,提示用户选择文件的保存位置。SaveFileDialog 控件也具有Filter、FilterIndex、InitialDirectory、Filename、Multiselect、FileNames等属性,这些属性的作用与 OpenFileDialog对话框控件基本一致,此处不再赘述。

需注意的是,上述两个对话框只返回要打开或保存的文件名,并没有真正提供打开或保存文件的功能,程序员必须自己编写文件打开或保存程序,才能真正实现文件的打开和保存功能。

与OpenFileDialog相似,将SaveFileDialog对话框添加到应用程序中有两种方式。

(1)设计方式:这是最常用的方式,即从工具箱拖放SaveFileDialog控件到应用程序窗体中。

(2)编程方式:用代码实现向应用程序中添加SaveFileDialog控件。先声明一个SaveFileDialog()类的新实例,并设置属性,然后调用ShowDialog()方法将对话框显示出来。代码如下。

SaveFileDialog dlg2 = new SaveFileDialog();
dlg2.ShowDialog();

【范例13-2】 打开与保存文件对话框的应用。

功能实现:设计一个窗体,用于打开用户指定类型的文件(RTF和TXT格式),并可以将其存放到另外的同类型文件中。实现时,创建一个Windows应用程序后,需要向默认窗体中添加1个OpenFileDialog控件、1个SaveFileDialog控件、1个RichTextBox控件和2个Button控件。添加的关键代码如下(代码13-2.txt),运行结果如下图所示。

/**********************************************************/
01  private void Form1_Load(object sender, EventArgs e)
02  {
03          button1.Enabled = true;
04          button2.Enabled = false;
05  }
06  private void button1_Click(object sender, EventArgs e)
07  {
08          openFileDialog1.FileName = "";
09          openFileDialog1.Filter = "RTF File(*.rtf)|*.RTF|TXT FILE(*.txt)|*.txt";
10          openFileDialog1.ShowDialog( );
11          if (openFileDialog1.FileName != "")
12                  switch (openFileDialog1.FilterIndex)
13                  {
14                          case 1:  //选择的是.rtf类型
15                          richTextBox1.LoadFile(openFileDialog1.FileName,
                             RichTextBoxStreamType.RichText);
16                          break;
17                  case 2:  //选择的是.txt类型
18                          richTextBox1.LoadFile(openFileDialog1.FileName,
                             RichTextBoxStreamType.PlainText);
19                          break;
20                  }
21          button2.Enabled = true;
22  }
23  private void button2_Click(object sender, EventArgs e)
24  {
25          saveFileDialog1.Filter = "RTF File(*.rtf)|*.RTF|TXT FILE(*.txt)|*.txt";
26          if (saveFileDialog1.ShowDialog() == DialogResult.OK)
27          switch (openFileDialog1.FilterIndex)
28          {
29                  case 1:  //选择的是.rtf类型
30                          richTextBox1.SaveFile(saveFileDialog1.FileName,
                             RichTextBoxStreamType.RichText);
31                          break;
32                  case 2:  //选择的是.txt类型
33                          richTextBox1.SaveFile(saveFileDialog1.FileName,
                             RichTextBoxStreamType.PlainText);
34                          break;
35          }
36  }
/*----------------------------------------------------------------------------------------------*/

209.jpg 210.jpg 211.jpg

3.浏览文件夹对话框控件FolderBrowserDialog

FolderBrowserDialog控件显示用来浏览、创建以及最终选择文件夹的对话框,提示用户选择文件夹。如果只允许用户选择文件夹而非文件,则可使用此控件。文件夹的浏览通过树控件完成。只能选择文件系统中的文件夹,不能选择虚拟文件夹。

浏览文件夹对话框控件FolderBrowserDialog的常用属性如下表所示。

| 属性 | 说明 | | :----- | :----- | :----- | :----- | | RootFolder | 获取或设置从其开始的根文件夹 | | SelectedPath | 获取或设置用户选定的路径 | | ShowNewFolderButton | 指示“新建文件夹”按钮是否出现在该对话框中 | | Description | 此属性为用户提供附加说明 |

通常在创建新 FolderBrowserDialog 后,将RootFolder 设置为开始浏览的位置。或者,可将SelectedPath 设置为最初选定的 RootFolder 子文件夹的绝对路径。也可以选择设置Description 属性为用户提供附加说明。最后,调用 ShowDialog 方法将对话框显示给用户。如果该对话框关闭并且 ShowDialog 显示的对话框为 DialogResult.OK,SelectedPath 则是一个包含选定文件夹路径的字符串。如果用户可通过“新建文件夹”按钮创建新文件夹,则可对控件使用ShowNewFolderButton 属性。

FolderBrowserDialog 对话框是模式对话框,因此,在显示时,它会阻止应用程序其余部分的运行,直到用户选定了文件夹。

【范例13-3】 浏览文件夹对话框的应用。

功能实现:创建1个Windows应用程序,在默认窗体中添加1个FolderBrowserDialog控件、1个Button控件和1个RichTextBox控件,其中, FolderBrowserDialog控件用来显示“浏览文件夹”对话框,Button控件用来选择文件夹, RichTextBox控件用来显示选择的文件夹路径。添加的关键代码如下(代码13-3.txt)。

/**********************************************************/
01  private void button1_Click(object sender, EventArgs e)
02  {
03          //设置浏览对话框的初始路径为桌面
04          folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;  
05          if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) //判断是否选择了文件
06          {
07                  //将选择的文件显示在文本框中
08                  richTextBox1.Text += folderBrowserDialog1.SelectedPath; 
09          }
10  }
/*----------------------------------------------------------------------------------------------*/

运行结果如下图所示。

212.jpg 213.jpg

4.字体对话框控件FontDialog

FontDialog控件又称字体对话框,用来弹出Windows中标准的“字体”对话框。字体对话框的作用是显示当前安装在系统中的字体列表,提示用户从字体列表中选择一种字体。用户通过“字体”对话框可改变文字的字体、样式、字号等。与其他通用对话框一样,在创建 FontDialog控件的实例后,必须调用ShowDialog方法才能显示此通用对话框。

字体对话框控件FontDialog的常用属性如下表所示。

| 属性 | 说明 | | :----- | :----- | :----- | :----- | | Font | 该属性是字体对话框的最重要属性,通过它可以设定或获取字体信息 | | Color | 用来设定或获取字符的颜色 | | MaxSize | 用来获取或设置用户可选择的最大磅值 | | MinSize | 用来获取或设置用户可选择的最小磅值 | | ShowColor | 用来获取或设置一个值,该值指示对话框是否显示颜色选择框。如果对话框显示颜色选择框,属性值为true,反之,属性值为false。默认值为false | | ShowEffects | 用来获取或设置一个值,该值指示对话框是否包含允许用户指定删除线、下画线和文本颜色选项的控件。如果对话框包含设置删除线、下画线和文本颜色选项的控件,属性值为 true,反之,属性值为false。默认值为true |

5.颜色对话框控件ColorDialog

ColorDialog 控件又称颜色对话框,用来弹出 Windows 中标准的“颜色”对话框。颜色对话框的作用是显示允许用户设置界面对象颜色的颜色选择器(或调色板),供用户选择一种颜色或创建自定义颜色,以设置某个界面对象的颜色,并用 Color 属性记录用户选择的颜色值。与其它通用对话框一样,在创建 ColorDialog控件的实例后,必须调用ShowDialog方法才能显示此通用对话框。

颜色对话框控件ColorDialog的常用属性如下表所示。

| 属性 | 说明 | | :----- | :----- | :----- | :----- | | AllowFullOpen | 用来获取或设置一个值,该值指示用户是否可以使用该对话框定义自定义颜色。设置为false时,只显示左半部分的“颜色”对话框,禁用“自定义颜色”按钮。这个属性的默认值是true,允许用户自定义颜色 | | FullOpen | 用来获取或设置一个值,该值指示用于创建自定义颜色的控件在对话框打开时是否可见。值为true时可见,值为 false时不可见 | | AnyColor | 把这个属性设置为true,将在基本颜色列表中显示所有可用的颜色,否则不显示所有颜色 | | Color | 用来获取或设置用户选定的颜色 | | CustomColors | 使用该属性可以预置一个定制颜色数组,并可以读取用户定义的定制颜色 | | SolidColorOnly | 把SolidColorOnly属性设置为true,用户就只能选择单色 |

【范例13-4】 字体与颜色对话框的应用。

功能实现:创建1个Windows应用程序,在默认窗体中添加1个RichTextBox 控件、1个FontDialog控件、1个ColorDialog控件和2个Button控件。其中, RichTextBox控件用来输入并选择文本, FontDialog控件用来显示“字体”对话框,ColorDialog控件用来显示“颜色”对话框,button1控件用来打开“字体”对话框并对字体进行设置,button2控件用来打开“颜色”对话框并对所选文本设置颜色。添加的关键代码如下(代码13-4.txt)。

/**********************************************************/
01  private void button1_Click(object sender, EventArgs e)
02  {
03          fontDialog1.AllowVectorFonts = true;     //设置用户可以选择矢量字体
04          fontDialog1.AllowVerticalFonts = true;   //设置字体对话框显示水平字体和垂直字体
05          fontDialog1.FixedPitchOnly = false;      //设置用户可以选择不固定间距的字体
06          fontDialog1.MaxSize = 72;                //设置可选择的最大字
07          fontDialog1.MinSize = 5;                 //设置可选择的最小字
08          if (fontDialog1.ShowDialog() == DialogResult.OK)  //判断是否选择了字体
09          {
10                  if (richTextBox1.SelectedText == "")   //判断是否选择了文本
11                  richTextBox1.SelectAll();       //全选文本
12                  richTextBox1.SelectionFont = fontDialog1.Font;  //设置选中的文本字体
13          }
14  }
15  private void button2_Click(object sender, EventArgs e)
16{
17          colorDialog1.AllowFullOpen = true;      //设置允许用户自定义颜色
18          colorDialog1.AnyColor = true;           //设置颜色对话框中显示所有颜色
19          colorDialog1.SolidColorOnly = false;    //设置用户可以在颜色对话框中选择复杂颜色
20          if (colorDialog1.ShowDialog() == DialogResult.OK) //判断是否选择了颜色
21          {
22                  if (richTextBox1.SelectedText == "")     //判断是否选择了文本
23                  richTextBox1.SelectAll();                //全选文本
24                  //将选定的文本颜色设置为颜色对话框中选择的颜色
25                  richTextBox1.SelectionColor = colorDialog1.Color; 
26          }
27  }
/*----------------------------------------------------------------------------------------------*/

运行结果如下图所示。

214.jpg 215.jpg 216.jpg