3

我有一个 MDI 应用程序。当我使用 MessageBox.Show() 显示消息框时,当我关闭消息框时,整个应用程序会消失在所有打开的窗口后面。

代码没有做任何特别的事情。事实上,这是从 MDI 子窗体中调用消息框的行:

MessageBox.Show(String.Format("{0} saved successfully.", Me.BusinessUnitTypeName), "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)

Me.BusinessUnitTypeName() 是一个只读属性 getter,它根据成员变量的值返回一个字符串。此属性没有副作用。

有任何想法吗?

4

3 回答 3

5

删除最后一个参数MessageBoxOptions.DefaultDesktopOnly.

来自MSDN

DefaultDesktopOnly 将导致引发 MessageBox 的应用程序失去焦点。显示的 MessageBox 不会使用视觉样式。有关详细信息,请参阅使用视觉样式呈现控件。

最后一个参数允许后台 Windows 服务通过 csrss.exe 与活动桌面通信!有关详细信息,请参阅 Bart de Smet 的博客文章

于 2008-10-01T02:48:17.617 回答
2

删除该MessageBoxOptions.DefaultDesktopOnly参数,它将正常工作。

DefaultDesktopOnly指定“消息框显示在活动桌面上”导致焦点丢失。

于 2008-10-01T02:48:09.940 回答
1

这些答案是正确的,但我想补充一点。我在使用别人的代码时遇到了这个问题。一个简单的消息框导致最前面的窗口移到后面:

MessageBox.Show("你好")。

原来,在 MessageBox 之前有一个 BindingSource.Endedit 命令。BindingSource 尚未连接到任何控件,但它导致窗口更改 z 位置。

我只包含此注释,因为我的搜索将我带到了这个问题,并且我认为它可能对其他人有帮助。

于 2019-02-05T16:58:39.860 回答