对话框和前文介绍的提示框一样,是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:
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类的主要属性及其说明
三.字体选择对话框:
VB.NET中创建字体选择对话框是通过FontDialog类,FontDialog类结构也不复杂,和上面介绍的二个类也有很多相似之处,具体如表03所示:
四.颜色选择对话框:
VB.NET中创建颜色选择对话框是通过ColorDialog类,ColorDialog类结构最为简单,具体如表04所示:
五.打印机设置对话框:
VB.NET中创建打印机设置对话框是通过PrintDialog类,表05是PrintDialog类的常用属性及其说明:
六.打印预览对话框:
VB.NET中创建打印机预览对话框是通过PrintPreviewDialog类,打印机预览对话框其实也可以看成是一个窗体,因为它拥有做为一个窗体所拥有的所有属性,所以PrintPreviewDialog类是本文介绍的所有类中最为复杂的一个。表06是和打印预览对话框最为相关的属性及其说明:
下列代码在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所示设定各组件的属性
表07:【全面掌握对话框】项目中各组件主要属性值
并按照图04所示排列窗体中的各组件