C# MessageBox.Show()和#x27;冻结';winforms应用程序,除非按ALT键

C# MessageBox.Show()和#x27;冻结';winforms应用程序,除非按ALT键,c#,winforms,messagebox,C#,Winforms,Messagebox,这可能是一个愚蠢的问题,但我一直在四处寻找,找不到与我的情况相关的参考资料 我有一个C#winforms应用程序,由多个表单组成。 当一个特定表单打开时(我们称之为表单a),另一个表单试图显示messageBox,应用程序似乎冻结了。 如果我按键盘上的ALT键,情况就会解决,在这种情况下,messageBox会出现,我可以继续 这适用于其他形式,因此我认为问题是特定于形式A的,但是,我对如何处理这一问题知之甚少。 表单属性似乎与其他表单没有任何不同,我们使用VS中的设计器界面创建表单 我非常感谢

这可能是一个愚蠢的问题,但我一直在四处寻找,找不到与我的情况相关的参考资料

我有一个C#winforms应用程序,由多个表单组成。
当一个特定表单打开时(我们称之为表单a),另一个表单试图显示messageBox,应用程序似乎冻结了。
如果我按键盘上的ALT键,情况就会解决,在这种情况下,messageBox会出现,我可以继续

这适用于其他形式,因此我认为问题是特定于形式A的,但是,我对如何处理这一问题知之甚少。
表单属性似乎与其他表单没有任何不同,我们使用VS中的设计器界面创建表单


我非常感谢您提供的任何指导或帮助。

请解释一下在我使用windows窗体的过程中问题出在哪里。我一直在执行繁重的进程中的线程或后台工作。

好的,问题解决了! 这就是为什么: 在表单A中,我有一个datagridview。作为前一个问题的解决方案,我在pain上为该对象运行了一个函数。 这个函数在同一个对象上调用刷新——问题就在这里——一个无休止的循环,劫持了我的应用程序并有效地隐藏了messageBox

当然,这对我来说是一个新手的错误,也是一个“我并没有注意到”的糟糕案例。
希望这对将来的人有所帮助:)

我也遇到了同样的问题,并确认下面的代码有效

MessageBox.Show("Hello", "Prompt", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
重要的事情是五和六个论点。这些一定是

MessageBoxDefaultButton.Button1, 
MessageBoxOptions.DefaultDesktopOnly

希望这能有所帮助。

如果它是特定于表单的,我们需要代码来了解问题可能在哪里。因为必须按alt键才能显示它对meMost来说是新的,所以您可能没有使用重载版本的
Show
,该版本接受所有者窗口的处理程序,并且操作系统在当前活动窗口的后台某处错误地显示消息。尝试将显式值传递给第一个参数,
iwin32windowowner
,然后返回结果。我想将此作为一个答案发布,但很可能您遇到了另一个问题,与此常见问题无关。WiktorZychla-我尝试添加所有者,但问题仍然存在。需要注意的是,同一问题不会在其他表单中重复,只是在特定的表单A中重复,因此我怀疑问题是否存在于messagebox中@EpicKip-我很乐意分享代码,如果你能告诉我任何类型的代码可能与这个问题有关。“表格A”课程很长,充满了恐惧;)@Eli.E我不知道问题出在哪里,因为我不知道代码->我们在这里的一个循环中,我有一个表单(a),通过主表单显示-激活。打开表单A时,我继续处理我的主表单,执行一个导致messageBox.show()命令的操作。当到达该点时,messageBox不会出现,应用程序似乎已冻结。这在我按下ALT键时得到解决,此时,消息框显示正常。其他一些注意事项:1)除了表单a之外,其他表单不会发生这种情况2)表单a通过form.show()激活,因此我可以同时处理这两个表单。