It's not who you are underneath, it's what you do that defines you

分析C#中Dialog控件(转)

对话框是Widows系统中的一种用来和使用者实现交互的特殊窗口。在Windows系统中,常见的对话框,根据使用方式和性质一般分成以下六种类型:文件打开对话框、文件保存对话框、字体选择对话框、颜色选择对话框和打印机设置对话框和文件打印预览对话框。至于这六个对话框的在Windows系统的表现形式和所起的具体作用,我想各位一定都很清楚了,这里也就不一一介绍了。
首先要明确的是C#语言本身并没有提供处理对话框的功能,所以C#处理对话框就必须借助"外力",而这种"外力"就是.Net框架提供给所有开发.Net平台应用程序的一个公用的类库--.Net FrameWork SDK。在.Net FrameWork SDK中的命名空间System.Windows.Forms中定义了六个类:OpenFileDialog类、SaveFileDialog类、FontDialog类、ColorDialog类、PrintPreviewDialog类和PrintDialog类。C#就是使用上述六个类来处理与对话框相关的操作的。其中C#利用OpenFileDialog类来处理与文件选择对话框相关操作;利用SaveFileDialog类处理和文件保存对话框相关操作;利用FontDialog类处理和字体选择对话框相关操作;利用ColorDialog类处理和颜色选择对话框相关操作;利用PrintPreviewDialog类处理和打印预览对话框相关操作和利用PrintDialog类处理和打印机设置对话框相关操作。

  C#在使用上述六种类来处理Windows系统常见的六种对话框时,其主要的步骤如下:

  1. 实例化上述类,即:创建上述类的实例。

  2. 初始化创建的实例,并显示。

  3. 处理对话框返回的数据。

  下面首先来介绍这六个类的组成结构。这六个类在结构上有相似之处,表现在某些类有很多名称、作用相同的组成成员。另外这六个类的方法结构都比较简单,其中最为重要的方法是"ShowDialog",其作用是都是显示对话框。
 一.文件选择对话框:

  在C#中创建的文件选择对话框其实就是OpenFileDialog类的实例。通过对设定
OpenFileDialog类的属性来定制文件选择对话框的式样和功能。OpenFileDialog类的主要属性如下表:
属性
 说明
 
AddExtension
 该值指示如果用户省略扩展名对话框是否自动在文件名中添加扩展名。
 
CheckFileExists
 该值指示如果用户指定不存在的文件名对话框是否显示警告。
 
CheckPathExists 
 该值指示如果用户指定不存在的路径对话框是否显示警告。
 
DefaultExt 
 获取或设置默认文件扩展名。
 
DereferenceLinks
 该值指示对话框是否返回快捷方式引用的文件的位置或者是否返回快捷方式
 
FileName 
 字符串,获取或设置一个包含在文件对话框中选定的文件名的字符串。
 
FileNames 
 字符串数组,获取对话框中所有选定文件的文件名。
 
Filter 
 字符串,获取或设置当前文件名筛选器字符串该字符串决定对话框的"另存为文件类型"或"文件类型"框中出现的选择内容。
 
FilterIndex 
 整型,获取或设置文件对话框中当前选定筛选器的索引。
 
InitialDirectory 
 字符串,获取或设置文件对话框显示的初始目录。
 
Multiselect 
 布尔型,该值指示对话框是否允许选择多个文件。
 
ReadOnlyChecked 
 布尔型,该值指示是否选定只读复选框。
 
RestoreDirectory 
 布尔型该值指示对话框在关闭前是否还原当前目录。
 
ShowHelp
 布尔型,该值指示文件对话框中是否显示"帮助"按钮。
 
ShowReadOnly
 布尔型,该值指示对话是否包含只读复选框。
 
Title 
 字符串,获取或设置文件对话框标题。

  C#通过调用OpenFileDialog类实例的ShowDialog方法显示创建的实例,这样一个文件选择对话框就显示出来了。

  下列代码的作用在C#中通过创建一个OpenFileDialog实例,并设定此实例的各个属性值,来定制一个可以选择多个文件的文件选择对话框,并且把使用此对话框选择的多个文件名称通过提示框显示出来。请各位读者注意具体的实现方法:
DialogResult d = openFileDialog1.ShowDialog();

            if (d == DialogResult.OK)

            {

                string[] fileNames = openFileDialog1.FileNames;

                string fileNameString = string.Empty;

                foreach (string s in fileNames)

                {

                    fileNameString = fileNameString + s + "\n";

                }

                MessageBox.Show(fileNameString);

            }


下图是上述代码定制的打开文件对话框的模样:


  下图是上述程序中以提示框显示经过下图中所示的文件选择对话框选择的数据,即选择的多个文件名称:

二.文件保存对话框:

  C#中创建文件保存对话框是使用SaveFileDialog类,SaveFileDialog类的结构OpenFileDialog类的结构非常相似。下表是SaveFileDialog类的主要属性及其说明:
属性 
 说明
 
AddExtension 
 该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。
 
CheckFileExists
 该值指示如果用户指定不存在的文件名,对话框是否显示警告。
 
CheckPathExists
 该值指示如果用户指定不存在的路径,对话框是否显示警告。
 
CreatePrompt
 该值指示如果用户指定不存在的文件,对话框是否提示用户允许创建该文件。
 
DefaultExt 
 获取或设置默认文件扩展名。
 
DereferenceLinks 
 该值指示对话框是否返回快捷方式引用的文件的位置,或者是否返回快捷方式
 
FileName 
 获取或设置一个包含在文件对话框中选定的文件名的字符串。
 
FileNames
 获取对话框中所有选定文件的文件名。
 
Filter 
 获取或设置当前文件名筛选器字符串,该字符串决定对话框的"另存为文件类型"或"文件类型"框中出现的选择内容。
 
FilterIndex
 获取或设置文件对话框中当前选定筛选器的索引。
 
InitialDirectory 
 获取或设置文件对话框显示的初始目录。
 
OverwritePrompt 
 该值指示如果用户指定已存在的文件名,"另存为"对话框是否显示警告。
 
RestoreDirectory 
 该值指示对话框在关闭前是否还原当前目录。
 
ShowHelp 
 该值指示文件对话框中是否显示"帮助"按钮。
 
Title 
 获取或设置文件对话框标题。

  三.字体选择对话框:

 C#中创建字体选择对话框是通过FontDialog类,FontDialog类结构也不复杂,和上面介绍的二个类也有很多相似之处,具体如下表所示:

属性
 说明
 
AllowScriptChange 
 指示用户能否更改
 
AllowSimulations
 指示对话框是否允许图形设备接口
 
AllowVectorFonts 
 指示对话框是否允许选择矢量字体。
 
AllowVerticalFonts 
 指示对话框是既显示垂直字体又显示水平字体,还是只显示水平字体。
 
Color 
 获取或设置选定字体的颜色。
 
FixedPitchOnly 
 指示对话框是否只允许选择固定间距字体。
 
Font 
 获取或设置选定的字体。
 
FontMustExist
 指示对话框是否指定当用户试图选择不存在的字体或样式时的错误条件。
 
MaxSize
 获取或设置用户可选择的最大磅值。
 
MinSize
 获取或设置用户可选择的最小磅值。
 
ScriptsOnly
 示对话框是否允许为所有非指
 
ShowApply 
 指示对话框是否包含"应用"按钮。
 
ShowColor 
 指示对话框是否显示颜色选择。
 
ShowEffects
 指示对话框是否包含允许用户指定删除线、下划线和文本颜色选项的控件。
 
ShowHelp 
 指示对话框是否显示"帮助"按钮。

  四.颜色选择对话框:

 C#中创建颜色选择对话框是通过ColorDialog类,ColorDialog类结构最为简单,具体如下表所示:
属性 
 说明
 
AllowFullOpen 
 指示用户是否可以使用该对话框定义自定义颜色。
 
AnyColor
 指示对话框是否显示基本颜色集中可用的所有颜色。
 
Color
 获取或设置用户选定的颜色。
 
CustomColors 
 获取或设置对话框中显示的自定义颜色集。
 
FullOpen 
 指示用于创建自定义颜色的控件在对话框打开时是否可见。
 
ShowHelp
 指示在颜色对话框中是否显示"帮助"按钮。
 
SolidColorOnly
 指示对话框是否限制用户只选择纯色。

 五.打印机设置对话框:

  C#中创建打印机设置对话框是通过PrintDialog类,下表是PrintDialog类的常用属性及其说明:
属性
 说明
 
AllowPrintToFile
 指示是否启用"打印到文件"复选框。
 
AllowSelection 
 获取或设定一个值,指示是否启用了页码范围选项按钮。
 
AllowSomePages
 指示是否启用"页"选项按钮。
 
Document
 获取或设置一个值,指示用于获取
 
PrinterSettings 
 获取或设置该对话框要修改的
 
PrintToFile
 指示"打印到文件"复选框是否选中。
 
ShowHelp 
 指示是否显示"帮助"按钮。
 
ShowNetwork
 指示是否显示"网络"按钮。

  六.打印预览对话框:

  C#中创建打印机预览对话框是通过PrintPreviewDialog类,打印机预览对话框其实也可以看成是一个窗体,因为它拥有做为一个窗体所拥有的所有属性,所以PrintPreviewDialog类是本文介绍的所有类中最为复杂的一个。下表是和打印预览对话框最为相关的属性及其说明:
属性 
 说明
 
AcceptButton
 获取或设置当用户按
 
DataBindings
 为该控件获取数据绑定。
 
DialogResult
 获取或设置窗体的对话框结果。
 
Document
 获取或设置要预览的文档。
 
Enabled
 指示是否启用该控件。
 
FormBorderStyle
 获取或设置窗体的边框样式。
 
Height
 获取或设置控件的高度。
 
HelpButton
 指示是否应在窗体的标题框中显示"帮助"按钮。
 
Icon 
 获取或设置窗体的图标。
 
MaximizeBox 
 指示是否在窗体的标题栏中显示最大化按钮。
 
MaximumSize
 获取或设置窗体可调整到的最大大小。
 
MinimizeBox 
 指示是否在窗体的标题栏中显示最小化按钮。
 
MinimumSize 
 获取窗体可调整到的最小大小。
 
Name 
 获取或设置控件的名称。
 
OwnedForms 
 获取
 
ShowInTaskbar
 指示是否在
 
Size
 获取或设置窗体的大小。
 
StartPosition 
 获取或设置运行时窗体的起始位置。
 
TabIndex 
 获取或设置在控件的容器的控件的
 
TopMost
 指示窗体是否应显示为应用程序的最顶层窗体。
 
Visible 
 指示该控件是否可见。
 
Width 
 获取或设置控件的宽度。
 
WindowState
 获取或设置窗体的窗口状态。

  下列代码在C#中定制一个打印预览对话框:
在 “打印预览” 的单击事件里写:
this.printPreviewDialog1.Document = this.printDocument1;

            printPreviewDialog1.ShowDialog();


  下图是上述代码定制的打印预览对话框的模样:


 七.具体的使用方法:

  至此已经介绍了这六个类的组成结构和大致的用法,下面就通过编写一个完成的示例来更深入的掌握这些类的使用方法。在下面介绍的示例中,将使用到前面介绍的四个类,这个示例的功能是通过文件选择对话框打开文本文件,并通过文本框来显示文本文件的内容,使用字体对话框来设定文本框中的字体和前景色,使用颜色对话框来设定文本对话框的背景色。最后使用文件保存对话框把修改的文本框中的文字另存为一个文本文件。通过对这个示例,我们将更深入的掌握Visual Basic .Net中对话框的使用方法,以下是此示例的具体实现步骤:

  1. 启动C#

  2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

  3. 将【项目类型】设置为【C# 项目】。

  4. 将【模板】设置为【Windows应用程序】。

  5. 在【名称】文本框中输入【全面掌握对话框】。

  6. 在【位置】的文本框中输入【E:\ C#项目】,然后单击【确定】按钮,这样在"E:\ C#项目"目录中就产生了名称为"全面掌握对话框"的文件夹,里面存放的是创建的"全面掌握对话框"的项目文件。

  7. 把C#的当前窗口切换到【Form1. C#(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中按照如下顺序往Form1窗体中拖入下列组件:

  一个TextBox组件,名称为TextBox1,用以显示、编辑文本文件。
  四个Button组件,名称分别为Button1、Button2、Button3和Button4。程序中通过其Click事件分别实现设定文本框的字体、颜色和读取、保存文本等操作。
  一个SaveFileDialog组件,名称为SaveFileDialog1,用以创建文件保存对话框。
  一个OpenFileDialog组件,名称为OpenFileDialog1,用以创建文件打开对话框。
  一个FontDialog组件,名称为FontDialog1,用以创建字体对话框。
  一个ColorDialog组件,名称为ColorDialog,用以创建颜色对话框。

posted @ 2011-06-14 11:00  金铭杰  阅读(858)  评论(0编辑  收藏  举报

Brick walls are there for a reason :they let us prove how badly we want things