大家都知道Messagebox用来弹出提示信息。
下面是我发现的一些事实:
1。如果Messagebox有owner Form的话,owner Form一关闭,Messagebox会马上自动关闭。
2。在显示Messagebox时,如何没有指定owner Form,系统会自动把同一程序中当前活动的窗体作为Messagebox的owner
3。Messagebox总是显示在owner Form所在的同一屏幕上。(如果你同时有2块以上的屏幕的话)
4。如果你不想MessageBox被自动关闭,你必须使它没有owner Form。
5。如果你一定要显示一个独立的Messagebox(无Owner), 可以用下面方法
MessageBox.Show("1", "1", MessageBoxButtons.OK, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification, true);
这种方式,有2个缺点: 当messagebox打开的时候,其他窗体就算执行了Close()方法,也关不掉了。一直要等到messagebox关闭后,其他窗体才能得以关闭。而且,messagebox始终会显示在第一块(Primary)屏幕上。(如果你同时有2块以上的屏幕的话)
或者使用API:
MessageBox(IntPtr.Zero, "MyText", "MyCaption",
MessageBoxOptions.IconWarning | MessageBoxOptions.YesNoCancel | MessageBoxOptions.Help | MessageBoxOptions.TaskModal | MessageBoxOptions.Topmost);
这种方式,是我目前发现最好的。它同时满足了下面条件:
1。模式窗口,如果MessageBox不关闭,其他窗体不会得到响应。
2。始终显示在屏幕顶层
3。总是显示在同一程序中当前活动的窗体所在的同一屏幕上。(如果你同时有2块以上的屏幕的话)
4。当messagebox打开的时候,其他窗体执行了Close()方法,可以自由关闭
5。其他窗体执行了Close()方法关闭自身时,MessageBox不会被自动关闭,因为它没有owner form.
分享到:
相关推荐
使系统的MessageBox显示位置可以改变
自动关闭弹窗MessageBox, 通过使用定时器,使弹窗在出现一段时间后自动关闭。
主要介绍了C#实现延时并自动关闭MessageBox的方法,非常实用的功能,需要的朋友可以参考下
CFileDialog、AfxMessageBox和MessageBox的显示位置问题,有详细的文档和代码工程(vc6.0)
windows开发使用到的MessageBox显示英文或者其他语言方法。
C#自动关闭MessageBox
通过winapi句柄实现MessageBox在数秒后自动关闭,没有太多的代码技巧。
主要介绍了C#实现winform自动关闭MessageBox对话框的方法,实例分析了C#中MessageBox对话框的相关操作技巧,需要的朋友可以参考下
MessageBox MessageBox MessageBox MessageBox
messagebox的各种状态下的显示效果
封杀MessageBox 关闭对话框 自动关闭 Message 自动关闭Message
VC实现系统运行窗口的进程ID、窗口名、窗口类以及MessageBox实现定时自动关闭
使用微软未文档化的MessageBoxTimeout函数,可以延时自动关闭自身弹出的MessageBox对话框,各位不妨参考一下。
回调函数的示例,主程序->调用函数->回调函数->程序结束,主程序->调用函数->启动线程->回调函数->程序结束。
我们都知道,MessageBox弹出的窗口是模式窗口,模式窗口会自动阻塞父线程的.所以如果有以下代码: MessageBox.Show("内容',"标题"); ....其它代码... 则只有关闭了MessageBox的窗口后才会运行下面的代码.而在某些...
C#版 MessageboxTimeout-自动关闭messagebox 消息对话框 实现了messagebox 对话框自动关闭,可以自由设定等待几秒后自动关闭。 内附使用说明
一个自动关闭的messagebox,调用该messagebox会造成线程阻塞,直到用户点确定或者指定的时间到了之后自动关闭.
pb中messagebox的使用方法,讲述开发中的pb中窗口使用方法
代码中提供了窗口截图的两种方法,但是在ScreenCapture.cs文件中提供了多种屏幕截图的方法 1、截取button_click后弹出的窗口; 2、获取指定标题的MessageBox,截图,并在一秒钟后自动关闭。
delphi7代码编辑运行环境下,Delphi Messagebox自动关闭功能演示代码,以及可运行程序,无须任何.net编译平台,windows下原生程序。 使用方法:打开对话框前调用 SetDlgAutoClose { 参数1: 设定多长时间后关闭 }...