大家都知道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.