【发布时间】:2011-09-20 21:02:31
【问题描述】:
请不要立即关闭问题。几乎类似的问题也在以下线程中讨论。
但是,这些并不能解决我的问题。 我的开发机器上从未出现过这个问题。它发生在用户机器中,但并非总是如此。事实上,它只发生了 3 或 4 次。
当它发生时,应用程序/调用表单似乎被冻结了。如果我能猜到(因为我没有在屏幕上看到它)关闭按钮在哪里,然后在调用的表单上单击它,它就会关闭并且应用程序会回到可用状态,直到它再次出现。
我的视图封装在演示者中,所以我不是从视图中调用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/
问题:
- 如何在我的开发机器中重现该问题并修复它?
- 如果我使用
Show()并设置TopMost = true,会不会有这个问题 发生? - 我应该考虑哪些事项可能会导致此问题?
如果Show()绝对保证不会出现问题,我会选择Show()。我对 ShowDialog() 有点失去信心了。
任何帮助将不胜感激。
** 特定屏幕/视图不会出现此问题。它是随机发生的。
** 除主窗体外的所有窗体,ShowInTaskBar 设置为 false。
【问题讨论】:
-
您的代码 sn-p 无法诊断此问题。
-
@HansPassant 我同意,我在这里发布它们是为了展示我如何调用视图,如果这很重要的话。
-
@HansPassant 如果您有兴趣查看任何特定代码,我可以在这里发布。
标签: c# .net winforms view krypton-toolkit