我有一个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,它返回一个字符串,具体取决于成员变量的值。这个属性没有副作用。

有什么想法吗?

有帮助吗?

解决方案

删除最后一个参数 MessageBoxOptions.DefaultDesktopOnly

来自 MSDN

  

DefaultDesktopOnly会导致   引发MessageBox的应用程序   失去焦点。这是MessageBox   显示不会使用视觉样式。   有关更多信息,请参见渲染   使用视觉样式进行控制。

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

其他提示

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

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

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

MessageBox.Show(QUOT;你好&QUOT)。

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

我只包括这个说明,因为我的搜索带给我这个问题,我认为这可能对其他人有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top