MessageBox是桌面的模态

时间:2014-11-17 20:53:08

标签: c# winforms messagebox

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

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

我们今天下午刚刚在两个终端用户的计算机上安装了该应用程序的测试版,出于某种原因,当我们在他们的任一台计算机上运行该应用程序时,消息框对于桌面是模态的 - 没有其他任何东西可以获得焦点,直到单击“确定”。此行为会导致我的应用程序出现巨大问题。

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

有什么建议吗?


更新

2014.11.17 - code snippet

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);

1 个答案:

答案 0 :(得分:1)

如果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()方法