当前位置:首页 > C# > 正文内容

C#中的MessageBox消息对话框

admin7年前 (2017-04-25)C#4537

在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示。在C#中,MessageBox消息对话框位于System.Windows.Forms命名空间中,一般情况,一个消息对话框包含信息提示文字内容、消息对话框的标题文字、用户响应的按钮及信息图标等内容。C#中允许开发人员根据自己的需要设置相应的内容,创建符合自己要求的信息对话框。

MessageBox消息对话框只提供了一个方法Show(),用来把消息对话框显示出来。此方法提供了不同的重载版本,用来根据自己的需要设置不同风格的消息对话框。此方法的返回类型为DialogResult枚举类型,包含用户在此消息对话框中所做的操作(点击了什么按钮),其可能的枚举值有以下几种:

  成员名称       说明
  Abort   用户单击“中止”按钮的返回值
  Cancel   用户单击“取消”按钮的返回值
  Igore   用户单击“忽略”按钮的返回值
  No   用户单击“否”按你的返回值
  None   强制响应(Modal)对话框继续执行,对话框没有返回任何信息
  OK   用户单击“确定”按钮的返回值
  Retry   用户单击“重试”按钮的返回值
  Yes   用户单击“是” 按钮的返回值

开发人员可以根据这些返回值判断接下来要做的事情。

在Show方法的参数中使用MessageBoxButtons来设置消息对话框要显示的按钮的个人及内容,此参数也是一个枚举值,其成员如下表所示:

  成员名称       说明
  AbortRetryIgnore   在消息框对话框中提供“中止”、“重试”和“忽略”三个按钮
  OK   在消息框对话框中提供“确定”按钮
  OKCancel   在消息框对话框中提供“确定”和“取消”两个按钮
  RetryCancel   在消息框对话框中提供“重试”和“取消”两个按钮
  YesNo   在消息框对话框中提供“是”和“否”两个按钮
  YesNoCancel   在消息框对话框中提供“是”、“否”和“取消”三个按钮

 在设计中,可以指定上表中的任何一个枚举值所提供的按钮,单击任何一个按钮都会对应DialogResult中的一个值。

在Show方法中使用MessageBoxIcon枚举类型定义显示在消息框中的图标类型,其可能的取值和形式如下表:

  成员名称 图标形式   说明
  Asterisk MessageBox消息对话框- 翔宇亭IT乐园  圆圈中有一个字母i组成的提示符号图标
  Error MessageBox消息对话框    红色圆圈中有白色X所组成的错误警告图标
  Exclamation  MessageBox消息对话框  黄色三角中有一个!所组成的符号图标
  Hand  MessageBox消息对话框  红色圆圈中有一个白色X所组成的图标符号
  Information MessageBox消息对话框   信息提示符号
  None    没有任何图标
  Question MessageBox消息对话框   由圆圈中一个问号组成的符号图标
  Stop MessageBox消息对话框   背景为红色圆圈中有白色X组成的符号
  Warning MessageBox消息对话框   由背景为黄色的三角形中有个!组成的符号图标

除上面的参数之外,还有一个MessageBoxDefaultButton枚举类型的参数,指定消息对话框的默认按钮。

下面是一个运用消息对话框的例子:

新建一个Windows应用程序,并从工具箱当中拖拽到窗口里一个按钮,把按钮和窗口的Text属性修改为“测试消息对话框”,双击该按钮,添加如下代码:

DialogResult dr;
       dr=MessageBox.Show("测试一下消息对话框!","测试测试",MessageBoxButtons.YesNoCancel,
                MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1);
       if(dr==DialogResult.Yes)
                 MessageBox.Show("你选择的为“是”按钮","系统提示1");
       else if(dr==DialogResult.No)
                 MessageBox.Show("你选择的为“否”按钮","系统提示2");
       else if(dr == DialogResult.Cancel)
                 MessageBox.Show("你选择的为“取消”按钮","系统提示3");
       else
                 MessageBox.Show("你没有进行任何的操作!","系统提示4");

系统运行后,将出现如下界面:

MessageBox消息对话框

单击按钮“测试消息对话框”,将出现如下消息对话框:

MessageBox消息对话框

分别单击三个按钮,将出现如下三种情况:

MessageBox消息对话框MessageBox消息对话框MessageBox消息对话框





1.MessageBox.Show(“Hello~~~~”);

最简单的,只显示提示信息。

2.MessageBox.Show(“There are something wrong!”,“ERROR”);

  可以给消息框加上标题。

3.if (MessageBox.Show(“Delete this user?”“Confirm Message”MessageBoxButtons.OKCancel) == DialogResult.OK)

{

   //delete

}

询问是否删除时会用到这个。

4.if (MessageBox.Show(“Delete this user?”“Confirm Message”MessageBoxButtons.OKCancel,MessageBoxIcon.Question) == DialogResult.OK)

{

    //delete

}

可以给MessageBox加上一个Icon,.net提供常见的Icon共选择。

5.if (MessageBox.Show(“Delete this user?”“Confirm Message”MessageBoxButtons.OKCancel, MessageBoxIcon.Question,MessageBoxDefaultButton.Button2) == DialogResult.OK)

{

   //delete

}

可以改变MessageBox的默认焦点,如下:

6.if (MessageBox.Show(“Delete this user?”“Confirm Message”MessageBoxButtons.OKCancel, MessageBoxIcon.Question,MessageBoxDefaultButton.Button2,MessageBoxOptions.RtlReading) ==DialogResult.OK)

{

   //delete

}

反向显示:

7.if (MessageBox.Show(“Delete this user?”“Confirm Message”MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign,true) == DialogResult.OK)

{

    //delete

}

添加Help按钮:

8.if (MessageBox.Show(“Delete this user?”“Confirm Message”MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading, @”/folder/file.htm”) == DialogResult.OK)

{

   //delete

}

指定帮助文件的路径,点击即可打开该路径下的帮助文件。

9.//HelpNavigator指定常数来指示要显示的帮助文件元素。Find 帮助文件将打开到搜索页。 

if (MessageBox.Show(“Delete this user?”“Confirm Message”MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading, @”/folder/file.htm”HelpNavigator.Find) == DialogResult.OK)

{

    //delete

}

还有一些用法,不是太实用这里就不一一介绍了,有兴趣的朋友可以参考下这里:MSDN的MessageBox类。


扫描二维码推送至手机访问。

版权声明:本文由视觉博客发布,如需转载请注明出处。

本文链接:http://feelsight.cn/post/35.html

“C#中的MessageBox消息对话框” 的相关文章

安装包制作工具 SetupFactory使用2 API清单

安装包制作工具 SetupFactory使用2 API清单

SetupFactory中可以通过其API控制很复杂的业务需求。   下图中展示了其内置的API种类与具体分类函数。             ...

C#全局监听Windows键盘事件

1.工具类代码 using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows...

c# 委托实现多线程的实例/另一个class类调用控件

c# 委托实现多线程的实例/另一个class类调用控件

一、使用线程在窗体中显示进度条 在Winform应用程序中,经常用进度条显示进度信息。这时候就可能用到多线程。如果不采用多线程控制进度条的话,窗口界面很容易假死(无法看到进度信息,看起来像界面卡住了)。 在这个实例中,我们建立一个窗体,窗体中包括一个后台组件,一个进度条控件。当在主窗...

C# .net动态加载第三方DLL

C#动态加载第三方DLL 当我们需要加载第三方非托管DLL时,通常会直接使用DllImport的方式,代码如下: [DllImport("GetFile.dll", CallingConvention = CallingConvention.StdCall,...

C#调用c++的dll执行带参数的函数时 请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配

C#动态调用DLL 由于Dll路径的限制,使用的不是很方便,C#中我们经常通过配置动态的调用托管Dll,例如常用的一些设计模式:Abstract Factory, Provider, Strategy模式等等,那么是不是也可以这样动态调用C++动态链接呢?只要您还记得在C++中,通...

使用PInvoke互操作,让C#和C++愉快的交互优势互补

使用PInvoke互操作,让C#和C++愉快的交互优势互补

一:背景 1. 讲故事 如果你常翻看FCL的源码,你会发现这里面有不少方法借助了C/C++的力量让C#更快更强悍,如下所示: [DllImport("QCall", CharSet = CharSet.Unicode)] [Securit...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。