2.9 输出对话框(MessageBox)
我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,也会使用对话框。在C#中,MessageBox消息对话框位于System.Windows.Forms命名空间中,一般的C#项目不会自动在每一个类模块上面加上这条指令。因此,要想让MessageBox正常使用,一定要确认是否声明了这条指令。对于C#窗体应用程序或者新创建的窗体类,一般会默认具有这条指令,不需用户再加。
一般情况下,一个消息对话框包含信息提示文字内容、消息对话框的标题文字、用户响应的按钮及信息图标等内容。C#中允许开发人员根据自己的需要设置相应的内容,创建符合自己要求的信息对话框。
■2.9.1 MessageBox语法
MessageBox的完整语法格式如下:
MessageBox.Show(String, String, MessageBoxButton, MessageBoxIcon, MessageBoxResult)
其功能是显示一个消息框,该消息框包含消息、标题栏标题、按钮和图标,并且接受默认消息框结果、遵从指定选项并返回结果。
最简单的对话框语法是MessageBox.Show(String),也就是说,其他参数接受默认,只规定显示内容即可。
注意 显示内容这一参数必须是String类型的结果值,如果是要显示其他类型数据,请使用ToString()方法转换。
下面这个示例自定义了以下5个参数:
● 显示内容
● 标题文字
● 按钮
● 对话框图标
● 默认按钮
如下代码执行后,将出现一个含有信息图标的对话框,运行结果如图2.5所示。
图2.5 MessageBox函数用法
1 MessageBox.Show("显示内容", "改变标题文字", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
我们仔细看一下,该对话框在显示内容的左侧出现一个问题图标,图标由MessageBoxIcon. Question这个参数来规定。“确定”和“取消”两个按钮由参数MessageBoxButtons. OKCancel规定。对话框启动后,默认已选中“取消”按钮,这由MessageBoxDefaultButton. Button2规定。
通过这个示例可以看出显示内容和标题文字的规定很简单,因此详细介绍一下后面三个选项的用法。
■2.9.2 自定义对话框的按钮
在代码的MessageBoxButton后输入小数点,可以看到如下6种样式的按钮组合,如图2.6所示。
● 取消 重试 忽略
● 确定
● 确定 取消
● 重试 取消
● 是 否
● 是 否 取消
在实际编程时根据需要进行设置即可。
图2.6 MessageBox函数参数提示
这里一定要思考一个问题,就是规定这些按钮后,单击不同的按钮,是否有不同的响应过程呢?稍后讨论对话框的返回值的问题。
■2.9.3自定义对话框的图标
对话框显示的图标用MessageBoxIcon枚举常量表示,如表2.7所示。
表2.7 MessageBoxIcon枚举常量
注意 不必死记硬背这些常量,编写代码时有自动成员提示。
■2.9.4自定义对话框默认按钮
MessageBoxDefaultButton参数规定了对话框显示后哪一个按钮是已选中按钮。MessageBox默认按钮常量如表2.8所示。
表2.8 MessageBox默认按钮常量
■2.9.5处理对话框的用户响应
前面讲到,对话框上可以规定多个按钮,如何判断单击了哪一个按钮呢?可以把MessageBox.Show赋给一个DialogResult类型的变量。
1 DialogResult v; 2 v = MessageBox.Show("是否提交试卷?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); 3 if (v == DialogResult.Yes) 4 this.Text = "提交"; 5 else if (v == DialogResult.No) 6 this.Text = "不提交";
上述代码执行后,会出现一个带有“是”和“否”两个按钮的询问对话框,如图2.7所示。
图2.7 处理对话框的用户响应
根据对话框的返回值,使用if或switch结构,分支对待所单击的按钮。上面的例子中,假设用户单击了对话框的“否(N)”按钮,变量v就等于DialogResult.No。