上一章,我们学了vb.net入门——Windows窗体的继承后,这里就来看看Windows 窗体中的提示对话框。
在基于Windows的应用程序中,对话框被用来提示用户提供应用程序的继续运行所需的数据或者向用户显示信息。对话框是一种特殊类型的窗体对象。
在Visual Basic .Net中提示对话框一般是指这两种:一种是等待并提示用户为程序运行输入指定的数据,称为"输入信息对话框",简称"输入对话框";另外一种就是起到提示作用,用以确认某种程序的操作,称为"信息提示对话框",简称"信息提示框"。
一、信息提示框
我们在使用Windows应用程序时候,碰到最多的就是信息提示框了,包括询问、警告以及操作完成等消息都是通过它来告知我们的。在vb.net中,有两种办法可以达到制作消息提示框的目的:一种是使用Msgbox函数,你要是使用过vb以前的版本的话一定对它很是熟悉了;第二种是使用.Net FrameWork SDK提供的类库MessageBox 类来实现。
方法一:Msgbox函数
该函数的结构:
Public Function MsgBox(ByVal Prompt As Object, _
Optional ByVal Buttons As MsgBoxStyle = MsgBoxStyle.OKOnly, _
Optional ByVal Title As Object = Nothing) As MsgBoxResult
参数说明:
Prompt
必选项。以消息形式显示在对话框中的 String 表达式。Prompt 的最大长度大约为 1024 个字符,具体取决于所用字符的宽度。如果 Prompt 中包含多个行,则可在各行之间用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符的组合 (Chr(13) & Chr(10)) 分隔各行。
Buttons
可选项。数值表达式,它是值的总和,指定显示的按钮数目及按钮类型,使用的图标样式,默认按钮的标识以及消息框的样式等。如果省略 Buttons,则默认值为零。
Title
可选项。显示在对话框标题栏中的 String 表达式。如果省略 Title,则将应用程序名放在标题栏中。
下面五个表列出了 MsgBoxStyle 枚举值。
枚举 | 值 | 说明 |
---|---|---|
OKOnly | 0 | 只显示“确定”按钮。 |
OKCancel | 1 | 显示“确定”和“取消”按钮。 |
AbortRetryIgnore | 2 | 显示“中止”、“重试”和“忽略”按钮。 |
YesNoCancel | 3 | 显示“是”、“否”和“取消”按钮。 |
YesNo | 4 | 显示“是”和“否”按钮。 |
RetryCancel | 5 | 显示“重试”和“取消”按钮。 |
枚举 | 值 | 说明 |
---|---|---|
Critical | 16 | 显示“关键消息”图标。 |
Question | 32 | 显示“警告查询”图标。 |
Exclamation | 48 | 显示“警告消息”图标。 |
Information | 64 | 显示“信息消息”图标。 |
枚举 | 值 | 说明 |
---|---|---|
DefaultButton1 | 0 | 第一个按钮是默认的。 |
DefaultButton2 | 256 | 第二个按钮是默认的。 |
DefaultButton3 | 512 | 第三个按钮是默认的。 |
枚举 | 值 | 说明 |
---|---|---|
ApplicationModal | 0 | |
SystemModal | 4096 |
枚举 | 值 | 说明 |
---|---|---|
MsgBoxSetForeground | 65536 | 指定消息框窗口为前景窗口。 |
MsgBoxRight | 524288 | 文本为右对齐。 |
MsgBoxRtlReading | 1048576 | 指定文本应为在希伯来语和阿拉伯语系统中从右到左显示。 |
以上五个表把MsgBoxStyle枚举值分为五个组,可以将这些枚举值相加以生成 Buttons 参数的最终值,但是要注意只能由每组中取用一个枚举值。
函数返回值:MsgBoxResult,下表列出了函数的返回值
常量 | 值 |
---|---|
OK | 1 |
Cancel | 2 |
Abort | 3 |
Retry | 4 |
Ignore | 5 |
Yes | 6 |
No | 7 |
表六:Msgbox函数的返回值
下面我们演示弹出一个警告提示框,如下图一所示:
图一
仔细观察上面的警告提示框,其标题栏的文字为"警告",图标为"警告消息"图标,按钮为显示"确定"和"取消"两个按钮,默认按钮为第一个按钮,提示文字为"演示警告对话框",所以在Msgbox函数的各个参数为:
Prompt="演示警告对话框"
Title="警告"
Buttons中包含三个值,警告图标(MsgBoxStyle.Exclamation)、按钮数目和类型(MsgBoxStyle.OKCancel)、默认按钮(MsgBoxStyle.DefaultButton1)。
综合以上我们可以得到如下一个完整的Msgbox函数的代码:
MsgBox("演示警告对话框", MsgBoxStyle.Exclamation Or MsgBoxStyle.OKCancel Or MsgBoxStyle.DefaultButton1, "警告")
注意:MsgBoxStyle各枚举值之间是用or连接,而不能用其它的符号!
经过上面的介绍,相信你对Msgbox函数已经会用了,但是在vb.net中,我们并不推荐使用Msgbox函数来制作信息提示框,下面我们就来讲讲vb.net更加强大更加灵活的MessageBox 类来实现信息提示框。
方法二:MessageBox 类实现信息提示框
经过上面的介绍,相信你对Msgbox函数已经会用了,但是在vb.net中,我们并不推荐使用Msgbox函数来制作信息提示框,下面我们就来讲讲vb.net更加强大更加灵活的MessageBox 类来实现信息提示框。
MessageBox类位于命名空间System.Windows.Forms中,它是一个静态类,所谓静态类,就是不通过创建实例就能够直接使用类中的方法。MessageBox类组成非常简单,其中最为重要的成员就是Show方法,Visual Basic .Net就是通过调用MessageBox类的Show方法来显示信息对话框的。Visual Basic .Net只使用MessageBox类是无法制作各式各样的信息对话框,还需要使用到命名空间System.Windows.Forms定义的若干枚举,这些枚举可以设定信息对话框中的各个元素。.Net 类库把信息对话框中的各个元素进行了细化,这一点不像MsgBox函数中使用的MsgBoxStryle枚举,MsgBoxStryle枚举把按钮的数目、种类、图标、按钮缺省焦点都定义到一起了。而.Net类库中定义了不同的枚举用以定义信息对话框中的各种元素。这些枚举就是:MessageBoxIcon、MessageBoxButtons和MessageBoxDefaultButton枚举。
MessageBox类中有很多重载Show方法,下面是最为常用的一种重载Show方法的语法格式:
Overloads Public Shared Function Show (ByVal text As String ,ByVal caption As String , _
ByVal buttons As MessageBoxButtons ,ByVal icon As MessageBoxIcon ,ByVal defaultButton As MessageBoxDefaultButton ) As DialogResult
参数说明:
text 必选,提示框中显示的内容。
caption 可选,提示框标题栏中显示的文本。
buttons 可选,MessageBoxButtons值之一,设定提示框中的按钮数目和类型。
icon 可选,MessageBoxIcon值之一,设定提示框中显示的图标类型。
defaultButton 可选,MessageBoxDefaultButton值之一,设定提示框缺省焦点按钮。
返回值 DialogResult值之一。
下面三个表分别列出了MessageBoxIcon、MessageBoxButtons和MessageBoxDefaultButton枚举值:
成员名称 | 说明 |
Asterisk | 信息符号图标。 |
Error | 关键符号图标 |
Exclamation | 感叹符号图标。 |
Hand | 关键符号图标。 |
Information | 信息符号图标 |
None | 无图标。 |
Question | 问号图标。 |
Stop | 关键符号图标。 |
Warning | 感叹符号图标。 |
成员名称 | 说明 |
AbortRetryIgnore | 提示框中包含"中止"、"重试"和"忽略"按钮。 |
OK | 提示框中包含"确定"按钮。 |
OKCancel | 该提示框中包含"确定"和"取消"按钮。 |
RetryCancel | 提示框中包含"重试"和"取消"按钮。 |
YesNo | 提示框中包含"是"和"否"按钮。 |
YesNoCancel | 提示框中包含"是"、"否"和"取消"按钮。 |
AbortRetryIgnore | 提示框中包含"中止"、"重试"和"忽略"按钮。 |
成员名称 | 说明 |
Button1 | 提示框中的第一个按钮是缺省焦点按钮。 |
Button2 | 提示框中的第二个按钮是缺省焦点按钮。 |
Button3 | 提示框中的第三个按钮是缺省焦点按钮。 |
二、输入对话框
输入对话框在Windows应用程序出现的机会比较小,但是很多情况下也是需要用到,特别是自定义的对话框,基本上都具备了输入对话框的功能,不过我们这里只讲讲怎么使用预定义的输入对话框,自定义对话框我们留待下一章再仔细学习。
在Visual Basic .Net,预定义的输入对话框是通过InputBox函数来实现的。
以下是InputBox函数在Visual Basic .Net中的语法:
Public Function InputBox(ByVal Prompt As String, _
Optional ByVal Title As String = "",Optional ByVal DefaultResponse As String = "", _
Optional ByVal XPos As Integer = -1,Optional ByVal YPos As Integer = -1) As String
参数:
Prompt
必选项。以消息形式显示在对话框中的 String 表达式。Prompt 的最大长度大约为 1024 个字符,具体取决于所用字符的宽度。如果 Prompt 中包含多个行,则可在各行之间用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符的组合 (Chr(13) & Chr(10)) 分隔各行。
Title
可选项。显示在对话框标题栏中的 String 表达式。如果省略 Title,则将应用程序名放在标题栏中。
DefaultResponse
可选项。显示在文本框中的 String 表达式,在没有提供其他输入时作为默认响应。如果省略 DefaultResponse,则显示的文本框为空。
XPos
可选项。数值表达式,以缇为单位指定对话框的左边与屏幕左边的距离。如省略 XPos,对话框将水平居中。
YPos
可选项。数值表达式,以缇为单位指定对话框的上边与屏幕上边的距离。如果省略 ypos,则对话框位于在屏幕垂直方向距下边缘大约三分之一处。
如下代码:
Dim message , title , defaultValue As String
Dim myValue As Object
message = "请输入数值,数值在1-3之间!" '设定对话框提示信息
title = "输入提示框!" '设置对话框标题
defaultValue = "1" '设定对话框中缺省的数值
myValue = InputBox ( message , title , defaultValue , 100 , 100 )'设定对话框在左上角坐标位于桌面(100,100)区域显示
运行效果如下图二所示:
图二:输入提示框效果
上面学了这么多东西,也到该结束这章的时候了,下面我们就以一个示例来演示信息输入框和信息提示框,作为这章内容的总结,要求:
1、使用输入提示框,接受输入数字
2、在程序中判断用户输入的信息
3、把判断结果用信息提示框告知用户
示例如下:
Form1窗体一个,Button1控件一个,在Button1控件中添加代码:
Dim strReturn As String
strReturn = InputBox("请输入数字", "输入", "0")
If IsNumeric(strReturn) = True Then
MessageBox.Show("你输入的数字是:" & strReturn, "input函数返回值", MessageBoxButtons.OK,MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
Else
MessageBox.Show("你输入的不是数字", "input函数返回值", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1)
End If
按F5运行,效果如下:
图三:弹出输入提示框
如果输入的是数字,返回一个结果提示:
图四:信息提示框
如果输入的不是数字,则弹出一个警告对话框
图五:信息提示框