我正在开发我的第一个WinForms应用程序...我通常会编写Web应用程序...

今天,我的应用程序发生了一件奇怪的事情。如果我在计算机上运行该应用程序,或者我的同事在他的计算机上运行该应用程序,则我的MessageBox仅对我的应用程序是模态的。这是所需的行为。如果出现消息框,我的用户将需要能够在单独的应用程序中进行手动编辑,并且在消息框中单击“确定”将“取消暂停”我的应用程序并允许他们继续。

今天下午,我们刚刚在两台最终用户的计算机上安装了该应用程序的Beta版,由于某种原因,当我们在他们的两台计算机上运行该应用程序时,消息框将显示在桌面上,除非“确定”,否则其他人将无法获得关注。被点击。此行为导致我的应用程序出现巨大问题。

我不知道在用户的计算机上有什么不同会导致此行为。
我的计算机-Win7 64位,我的同事的计算机-Win7 32位,两个用户的计算机是Win7 32位。所有都安装了.Net Framework 4.5或4.5.1。

有什么建议吗?

更新:

2014.11.17-代码段

DialogResult result = MessageBox.Show("The Style field did not pass validation.
                      Please manually fix the data then click OK to continue.",
                      "WARNING", MessageBoxButtons.OK,
                      MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);

最佳答案

如果Hans Passant发布了答案而不是评论,那么我会将他的回答标记为答案。

这是我解决问题的方法:

DialogResult result = MessageBox.Show(t2tWindow, "The Style field did not pass
                      validation.  Please manually fix the data then click OK
                      to continue.", "WARNING", MessageBoxButtons.OK,
                      MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);

该代码在单独的“实用程序”类中,而不是在表单的背后代码中,因此我必须将IWin32Window参数传递给该方法,以便将其传递给Show()方法。

关于c# - MessageBox对桌面是模态的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26981778/

10-10 20:22