请不要马上结束这个问题。几乎类似的问题也在下面的线程中讨论。
- Windows Forms and ShowDialog problem
- Form.ShowDialog() or Form.ShowDialog(this)?
但是,这些并不能解决我的问题。在我的开发机器中从未出现过问题。它发生在用户机器上,但并不总是如此。事实上,它只发生了三、四次。
当它发生时,似乎申请/调用表单被冻结。如果我能猜到关闭按钮在哪里(因为我在屏幕上没有看到它),并在调用的表单上单击它,它将关闭,应用程序将返回到可用状态,直到它再次出现。
我的视图被封装在演示器中,所以我不是从视图中调用ShowDialog()
,而是通过演示器调用。
MainPresenter
{
MainPresenter(IMainView view)
{
_view = view;
}
…
…
OpenSecondView()
{
var secondPresenter =_presenterFactory.Create<SecondPresenter>();
secondPresenter.Ininialize(_view);
}
}
// Initialize method in the SecondPresenter
Initialize(owner)
{
_secondView.ShowDialog(owner);
}
我使用观察演示者风格的MVP解释这里http://www.aspiringcraftsman.com/2008/11/23/model-view-presenter-styles/
问题:
1.如何在开发机器中重现问题并修复它?
1.如果我使用Show()
并设置TopMost = true
,是否可能出现此问题?
1.我应该考虑哪些因素可能导致此问题?
如果Show()
绝对保证问题不会发生,我就选Show()
。我对ShowDialog()
失去了信心。
任何帮助将不胜感激。
**特定屏幕/视图不会出现此问题。它随机发生。
**对于除主窗体外的所有窗体,ShowInTaskBar均设置为false。
2条答案
按热度按时间a9wyjsp71#
您可以尝试将
TopMost = true
用于表单monwx1rj2#
你有没有试过在表单的load事件中添加
this.Activate()
,因为我也遇到过类似的问题。