对话框和前文介绍的提示框一样,是Widows系统中的一种用来和使用者实现交互的特殊窗口。在Windows系统中,常见的对话框,根据使用方式和性质一般分成以下六种类型:文件打开对话框、文件保存对话框、字体选择对话框、颜色选择对话框和打印机设置对话框和文件打印预览对话框。至于这六个对话框的在Windows系统的表现形式和所起的具体作用,我想各位一定都很清楚了,这里也就不一一介绍了。下面就进入本节的主要内容,在Visual Basic .NET中制作这六种对话框和处理这些对话框的注意事项和技巧。 首先要明确的是Visual Basic .NET语言本身并没有提供处理对话框的功能(这一点不像上一节中所讲的提示框),所以VB.NET处理对话框就必须借助"外力",而这种"外力"就是.Net框架提供给所有开发.Net平台应用程序的一个公用的类库--.Net FrameWork SDK。在.Net FrameWork SDK中的命名空间System.Windows.Forms中定义了六个类:OpenFileDialog类、SaveFileDialog类、FontDialog类、ColorDialog类、PrintPreviewDialog类和PrintDialog类。VB.NET就是使用上述六个类来处理与对话框相关的操作的。其中VB.NET利用OpenFileDialog类来处理与文件选择对话框相关操作;利用SaveFileDialog类处理和文件保存对话框相关操作;利用FontDialog类处理和字体选择对话框相关操作;利用ColorDialog类处理和颜色选择对话框相关操作;利用PrintPreviewDialog类处理和打印预览对话框相关操作和利用PrintDialog类处理和打印机设置对话框相关操作。
VB.NET在使用上述六种类来处理Windows系统常见的六种对话框时,其主要的步骤如下:
1. 实例化上述类,即:创建上述类的实例。
2. 初始化创建的实例,并显示。
3. 处理对话框返回的数据。
下面首先来介绍这六个类的组成结构。这六个类在结构上有相似之处,表现在某些类有很多名称、作用相同的组成成员。另外这六个类的方法结构都比较简单,其中最为重要的方法是"ShowDialog",其作用是都是显示对话框。下面主要介绍六个类的属性。
一.文件选择对话框:
在VB.NET中创建的文件选择对话框其实就是OpenFileDialog类的实例。通过对设定 OpenFileDialog类的属性来定制文件选择对话框的式样和功能。OpenFileDialog类的主要属性如表01:
| 属性 |
说明 |
| AddExtension |
该值指示如果用户省略扩展名对话框是否自动在文件名中添加扩展名。 |
| CheckFileExists |
该值指示如果用户指定不存在的文件名对话框是否显示警告。 |
| CheckPathExists |
该值指示如果用户指定不存在的路径对话框是否显示警告。 |
| DefaultExt |
获取或设置默认文件扩展名。 |
| DereferenceLinks |
该值指示对话框是否返回快捷方式引用的文件的位置或者是否返回快捷方式 |
| FileName |
字符串,获取或设置一个包含在文件对话框中选定的文件名的字符串。 |
| FileNames |
字符串数组,获取对话框中所有选定文件的文件名。 |
| Filter |
字符串,获取或设置当前文件名筛选器字符串该字符串决定对话框的"另存为文件类型"或"文件类型"框中出现的选择内容。 |
| FilterIndex |
整型,获取或设置文件对话框中当前选定筛选器的索引。 |
| InitialDirectory |
字符串,获取或设置文件对话框显示的初始目录。 |
| Multiselect |
布尔型,该值指示对话框是否允许选择多个文件。 |
| ReadOnlyChecked |
布尔型,该值指示是否选定只读复选框。 |
| RestoreDirectory |
布尔型该值指示对话框在关闭前是否还原当前目录。 |
| ShowHelp |
布尔型,该值指示文件对话框中是否显示"帮助"按钮。 |
| ShowReadOnly |
布尔型,该值指示对话是否包含只读复选框。 |
| Title |
字符串,获取或设置文件对话框标题。 | 表01:OpenFileDialog类的主要属性及其说明
VB.NET通过调用OpenFileDialog类实例的ShowDialog方法显示创建的实例,这样一个文件选择对话框就显示出来了。
下列代码的作用在VB.NET中通过创建一个OpenFileDialog实例,并设定此实例的各个属性值,来定制一个可以选择多个文件的文件选择对话框,并且把使用此对话框选择的多个文件名称通过提示框显示出来。请各位读者注意具体的实现方法:
Dim strFileName ( ) As String '定义一个字符串数组 Dim OpenFileDialog1 As System.Windows.Forms.OpenFileDialog = New System.Windows.Forms.OpenFileDialog ( ) '创建一个OpenFileDialog实例 With OpenFileDialog1 .Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*" '设定文件类型过滤条件为:文本类型和全部文件 .FilterIndex = 1 '设定打开文件对话框缺省的文件过滤条件 .InitialDirectory = "C:\" '设定打开文件对话框缺省的目录 .Title = "打开文件" '设定打开文件对话框的标题 .Multiselect = True '设定可以选择多个文件 .ReadOnlyChecked = False '设定选中"只读"复选框 .ShowReadOnly = True '设定显示"只读"复选框 End With '设定打开文件对话框的式样和功能 If OpenFileDialog1.ShowDialog() = DialogResult.OK Then ' 显示打开文件对话框,并判断单击对话框中的"确定"按钮 strFileName = OpenFileDialog1.FileNames Dim s As String Dim i As Integer For i = 0 To strFileName.Length - 1 s = s + strFileName( i ) + Chr( 10 ) + Chr( 13 ) Next '处理打开文件选择框选择的文件 MessageBox.Show( s , "选择的文件名列表") End If | 图01是上述代码定制的打开文件对话框的模样:
 图01:打开文件对话框
图02是上述程序中以提示框显示经过图01中所示的文件选择对话框选择的数据,即选择的多个文件名称:
 图02:对图01中选择的数据处理后的界面
二.文件保存对话框:
VB.NET中创建文件保存对话框是使用SaveFileDialog类,SaveFileDialog类的结构OpenFileDialog类的结构非常相似。表02是SaveFileDialog类的主要属性及其说明:
| 属性 |
说明 |
| AddExtension |
该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。 |
| CheckFileExists |
该值指示如果用户指定不存在的文件名,对话框是否显示警告。 |
| CheckPathExists |
该值指示如果用户指定不存在的路径,对话框是否显示警告。 |
| CreatePrompt |
该值指示如果用户指定不存在的文件,对话框是否提示用户允许创建该文件。 |
| DefaultExt |
获取或设置默认文件扩展名。 |
| DereferenceLinks |
该值指示对话框是否返回快捷方式引用的文件的位置,或者是否返回快捷方式 |
| FileName |
获取或设置一个包含在文件对话框中选定的文件名的字符串。 |
| FileNames |
获取对话框中所有选定文件的文件名。 |
| Filter |
获取或设置当前文件名筛选器字符串,该字符串决定对话框的"另存为文件类型"或"文件类型"框中出现的选择内容。 |
| FilterIndex |
获取或设置文件对话框中当前选定筛选器的索引。 |
| InitialDirectory |
获取或设置文件对话框显示的初始目录。 |
| OverwritePrompt |
该值指示如果用户指定已存在的文件名,"另存为"对话框是否显示警告。 |
| RestoreDirectory |
该值指示对话框在关闭前是否还原当前目录。 |
| ShowHelp |
该值指示文件对话框中是否显示"帮助"按钮。 |
| Title |
获取或设置文件对话框标题。 | 表02:SaveFileDialog类的主要属性及其说明
三.字体选择对话框:
VB.NET中创建字体选择对话框是通过FontDialog类,FontDialog类结构也不复杂,和上面介绍的二个类也有很多相似之处,具体如表03所示:
| 属性 |
说明 |
| AllowScriptChange |
指示用户能否更改 |
| AllowSimulations |
指示对话框是否允许图形设备接口 |
| AllowVectorFonts |
指示对话框是否允许选择矢量字体。 |
| AllowVerticalFonts |
指示对话框是既显示垂直字体又显示水平字体,还是只显示水平字体。 |
| Color |
获取或设置选定字体的颜色。 |
| FixedPitchOnly |
指示对话框是否只允许选择固定间距字体。 |
| Font |
获取或设置选定的字体。 |
| FontMustExist |
指示对话框是否指定当用户试图选择不存在的字体或样式时的错误条件。 |
| MaxSize |
获取或设置用户可选择的最大磅值。 |
| MinSize |
获取或设置用户可选择的最小磅值。 |
| ScriptsOnly |
示对话框是否允许为所有非指 |
| ShowApply |
指示对话框是否包含"应用"按钮。 |
| ShowColor |
指示对话框是否显示颜色选择。 |
| ShowEffects |
指示对话框是否包含允许用户指定删除线、下划线和文本颜色选项的控件。 |
| ShowHelp |
指示对话框是否显示"帮助"按钮。 | 表02:FontDialog类的主要属性及其说明
四.颜色选择对话框:
VB.NET中创建颜色选择对话框是通过ColorDialog类,ColorDialog类结构最为简单,具体如表04所示:
| 属性 |
说明 |
| AllowFullOpen |
指示用户是否可以使用该对话框定义自定义颜色。 |
| AnyColor |
指示对话框是否显示基本颜色集中可用的所有颜色。 |
| Color |
获取或设置用户选定的颜色。 |
| CustomColors |
获取或设置对话框中显示的自定义颜色集。 |
| FullOpen |
指示用于创建自定义颜色的控件在对话框打开时是否可见。 |
| ShowHelp |
指示在颜色对话框中是否显示"帮助"按钮。 |
| SolidColorOnly |
指示对话框是否限制用户只选择纯色。 | 表04:ColorDialog类的常用属性及其说明
五.打印机设置对话框:
VB.NET中创建打印机设置对话框是通过PrintDialog类,表05是PrintDialog类的常用属性及其说明:
| 属性 |
说明 |
| AllowPrintToFile |
指示是否启用"打印到文件"复选框。 |
| AllowSelection |
获取或设定一个值,指示是否启用了页码范围选项按钮。 |
| AllowSomePages |
指示是否启用"页"选项按钮。 |
| Document |
获取或设置一个值,指示用于获取 |
| PrinterSettings |
获取或设置该对话框要修改的 |
| PrintToFile |
指示"打印到文件"复选框是否选中。 |
| ShowHelp |
指示是否显示"帮助"按钮。 |
| ShowNetwork |
指示是否显示"网络"按钮。 | 表05:PrintDialog类的常用属性及其说明
六.打印预览对话框:
VB.NET中创建打印机预览对话框是通过PrintPreviewDialog类,打印机预览对话框其实也可以看成是一个窗体,因为它拥有做为一个窗体所拥有的所有属性,所以PrintPreviewDialog类是本文介绍的所有类中最为复杂的一个。表06是和打印预览对话框最为相关的属性及其说明:
| 属性 |
说明 |
| AcceptButton |
获取或设置当用户按 |
| DataBindings |
为该控件获取数据绑定。 |
| DialogResult |
获取或设置窗体的对话框结果。 |
| Document |
获取或设置要预览的文档。 |
| Enabled |
指示是否启用该控件。 |
| FormBorderStyle |
获取或设置窗体的边框样式。 |
| Height |
获取或设置控件的高度。 |
| HelpButton |
指示是否应在窗体的标题框中显示"帮助"按钮。 |
| Icon |
获取或设置窗体的图标。 |
| MaximizeBox |
指示是否在窗体的标题栏中显示最大化按钮。 |
| MaximumSize |
获取或设置窗体可调整到的最大大小。 |
| MinimizeBox |
指示是否在窗体的标题栏中显示最小化按钮。 |
| MinimumSize |
获取窗体可调整到的最小大小。 |
| Name |
获取或设置控件的名称。 |
| OwnedForms |
获取 |
| ShowInTaskbar |
指示是否在 |
| Size |
获取或设置窗体的大小。 |
| StartPosition |
获取或设置运行时窗体的起始位置。 |
| TabIndex |
获取或设置在控件的容器的控件的 |
| TopMost |
指示窗体是否应显示为应用程序的最顶层窗体。 |
| Visible |
指示该控件是否可见。 |
| Width |
获取或设置控件的宽度。 |
| WindowState |
获取或设置窗体的窗口状态。 | 表05:PrintPreviewDialog类的常用属性及其说明
下列代码在VB.NET中定制一个打印预览对话框:
Dim PrintDocument1 As System.Drawing.Printing.PrintDocument = New System.Drawing.Printing.PrintDocument ( ) '创建一个打印文档 Dim PrintPreviewDialog1 As PrintPreviewDialog = New PrintPreviewDialog ( ) With PrintPreviewDialog1 .MaximizeBox = False .Text = "打印预览窗口" End With '设定打印预览窗口的属性 PrintPreviewDialog1.Document = PrintDocument1 PrintPreviewDialog1.ShowDialog ( ) | 图03是上述代码定制的打印预览对话框的模样:
 图03:定制的打印预览对话框
七.具体的使用方法:
至此已经介绍了这六个类的组成结构和大致的用法,下面就通过编写一个完成的示例来更深入的掌握这些类的使用方法。在下面介绍的示例中,将使用到前面介绍的四个类,这个示例的功能是通过文件选择对话框打开文本文件,并通过文本框来显示文本文件的内容,使用字体对话框来设定文本框中的字体和前景色,使用颜色对话框来设定文本对话框的背景色。最后使用文件保存对话框把修改的文本框中的文字另存为一个文本文件。通过对这个示例,我们将更深入的掌握Visual Basic .Net中对话框的使用方法,以下是此示例的具体实现步骤:
1. 启动Visual Studio .Net。
2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。
3. 将【项目类型】设置为【Visual Basic项目】。
4. 将【模板】设置为【Windows应用程序】。
5. 在【名称】文本框中输入【全面掌握对话框】。
6. 在【位置】的文本框中输入【E:\VS.NET项目】,然后单击【确定】按钮,这样在"E:\VS.NET项目"目录中就产生了名称为"全面掌握对话框"的文件夹,里面存放的是创建的"全面掌握对话框"的项目文件。
7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中按照如下顺序往Form1窗体中拖入下列组件:
一个TextBox组件,名称为TextBox1,用以显示、编辑文本文件。 四个Button组件,名称分别为Button1、Button2、Button3和Button4。程序中通过其Click事件分别实现设定文本框的字体、颜色和读取、保存文本等操作。 一个SaveFileDialog组件,名称为SaveFileDialog1,用以创建文件保存对话框。 一个OpenFileDialog组件,名称为OpenFileDialog1,用以创建文件打开对话框。 一个FontDialog组件,名称为FontDialog1,用以创建字体对话框。 一个ColorDialog组件,名称为ColorDialog,用以创建颜色对话框。
8. 在上述组件拖入窗体后,分别按照表07所示设定各组件的属性:
| 组件类型 |
组件名称 |
属性 |
设置结果 |
| Form |
Form1 |
Text |
全面掌握对话框 |
| MaximizeBox |
False |
| FormBorderStyle |
FixedSingle |
| Button |
Button1 |
Text |
打开 |
| FlatStyle |
Flat |
| Button |
Button2 |
Text |
保存 |
| Button2 |
FlatStyle |
Flat |
| Button |
Button3 |
Text |
字体 |
| FlatStyle |
Flat |
| Button |
Button4 |
Text |
颜色 |
| FlatStyle |
Flat | 表07:【全面掌握对话框】项目中各组件主要属性值
并按照图04所示排列窗体中的各组件:
 图04:【全面掌握对话框】项目中各组件的排列顺序
9. 把Visual Studio .Net的当前窗口切换到Form1.vb的代码编辑窗口,并在Form1.vb文件的头部添加下列代码,下列代码是导入Form1.vb中使用的类所在的命名空间:
10. 在Form1.vb文件中的InitializeComponent过程之后添加下列代码,下列代码是在Form1.vb中定义Button1-Button4组件的Click事件:
Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click Dim strFileName As String ' 设定打开文件对话框的属性 With OpenFileDialog1 .Filter = "Text files ( *.txt )|*.txt" .InitialDirectory = "C:" .Title = "打开文件对话框" End With '以下是打开文本文件,并通过文本框显示出来 If OpenFileDialog1.ShowDialog ( ) = DialogResult.OK Then strFileName = OpenFileDialog1.FileName Dim objReader As StreamReader = New StreamReader ( strFileName , System.Text.Encoding.Default ) TextBox1.Text = objReader.ReadToEnd ( ) objReader.Close ( ) objReader = Nothing End If End Sub
Private Sub Button2_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button2.Click Dim strFileName As String '设定文件保存对话框的属性 With SaveFileDialog1 .DefaultExt = "txt" .FileName = strFileName .Filter = "Text files ( *.txt )|*.txt" .FilterIndex = 1 .InitialDirectory = "C:\" .OverwritePrompt = True .Title = "文件保存对话框" End With '以下是把文本框中的文字另保存为文本文件 If SaveFileDialog1.ShowDialog ( ) = DialogResult.OK Then strFileName = SaveFileDialog1.FileName Dim objWriter As StreamWriter =New StreamWriter ( strFileName , False , System.Text.Encoding.Default ) objWriter.Write ( TextBox1.Text ) objWriter.Close ( ) objWriter = Nothing End If End Sub
Private Sub Button3_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button3.Click ' 设定字体对话框的属性 FontDialog1.ShowColor = True '显示字体对话框,并判断十分单击对话框中的"确定"按钮 If FontDialog1.ShowDialog ( ) = DialogResult.OK Then TextBox1.Font = FontDialog1.Font '设定文本框的字体 TextBox1.ForeColor = FontDialog1.Color '设定文本框的前景色 End If End Sub
Private Sub Button4_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button4.Click If ColorDialog1.ShowDialog ( ) = DialogResult.OK Then TextBox1.BackColor = ColorDialog1.Color '设定文本框的背景色 End If End Sub | 11. 在上述步骤都正确完成后,【全面掌握对话框】项目的全部工作就完成了。此时单击快捷键F5就可以运行程序,图05是【全面掌握对话框】运行界面:
 图05:【全面掌握对话框】的运行界面
图06程序在是使用文件保存对话框保存文本框中数据时的界面:
 图06:【全面掌握对话框】使用文件保存对话框来保存文件
八.总结:
上面已经介绍了在VB.NET中定制Windows系统的六种常见对话框的具体实现方法。由于篇幅所限,还有一些设定对话框属性没有具体的介绍,其实掌握这些属性是非常容易的,只需耽误您一点时间,在上述代码中添加一些代码就可以。相信您一定能够完成这些工作,其实编程水平的不断提高,最重要的一点就是多试验。我们下一节再见!
|
|