2017-07-19 85 views
0

这可能是一个愚蠢的问题,但我一直在四处寻找,但没有找到相关的参考我的情况。MessageBox.Show()“冻结”的WinForms应用程序,除非按下Alt

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

这正常工作与其他形式的,所以我收集的问题是具体的形成,但是,我对如何处理这个非常小的想法。
表单属性与其他表单没有任何区别,我们使用VS中的设计器界面创建表单。

我很欣赏任何类型的方向或帮助。

+2

如果其特定的形成我们需要的代码,了解哪里的问题可能是。因为不得不按ALT来显示对我来说是新的 – EpicKip

+0

大多数情况下,您可能不会使用接受所有者窗口的处理程序并且操作系统错误地显示消息的'Show'的重载版本,它位于当前活动的窗口。尝试将明确的值传递给第一个参数,即'IWin32Window所有者'并返回结果。我会张贴这个作为答案,但机会是你再次遇到另一个问题,与这个常见问题无关。 –

+0

WiktorZychla-我试图添加所有者,问题仍然复制。 重要的是要注意,同样的问题不会复制与其他形式,只是特定的形式A,所以我怀疑问题是与消息框。 @EpicKip - 我很乐意分享这些代码,如果您可以指示我使用任何可能与此问题相关的代码。 'form A'类很长,并且充满了恐惧;) –

回答

0

请解释一下其中的问题是在我使用的Windows窗体,我一直一直执行的线程或BackgroundWorker的重过程。

+0

我有一个表格(A)显示 - 通过主窗体激活。 当窗体A打开时,我继续在主窗体上工作,执行一个导致messageBox.show()命令的操作。 到达那个点时,messageBox没有出现,应用程序似乎被冻结。 当我点击ALT键时,这个问题得到解决,此时消息框显示为正常。 几个其它注释: 1)这不与其它形式的除形成甲 2)形式的发生经由form.show激活(),所以我可以与两个在同一时间工作。 –

0

好的,问题解决了! 这是如何: 在窗体A上,我有一个datagridview。作为上一个问题的解决方案,我有一个为该对象而痛苦的函数。 该函数正在调用同一对象的刷新 - 这里存在问题 - 一个无限循环,劫持我的应用程序并有效地隐藏messageBox。

当然,这是我的一个新手的错误和的“我没有注意到”不好的情况下。 希望这可以帮助别人的未来:)