VSTO开发入门教程
上QQ阅读APP看书,第一时间看更新

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。