Form.ShowDialog()不显示表单

时间:2010-04-20 04:10:41

标签: vb.net winforms

我遇到过一种情况,我尝试在方法中运行一行简单的代码

Dim res As DialogResult = frmOptions.ShowDialog()

但没有任何反应。该对话框不会出现。如果我从代码中的另一个位置运行此方法,它执行正常(即以对话框模式显示表单,此后代码执行正常)。因此,它可能是我到达导致我的问题的代码的方式,但我无法找到发现错误。

当我暂停调试器时,代码行以绿色突出显示,但我无法看到它跳过它或进入它。

任何想法可能会导致这种情况发生,或者我应该寻找什么可能导致问题?

感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

问题在于,默认情况下设置为对话框所有者的活动窗口将其TopMost属性设置为true。结果,对话框显示在所有者(TopMost)窗口后面。

对话框是一个模态窗体,因此其他窗口无法获得焦点,因此程序看起来没有任何事情发生或正在工作,而实际上对话框只是隐藏在最顶层的窗体后面。

代码在其他情况下工作的原因是因为活动窗口在加载对话框时没有将TopMost属性设置为true,因此会按预期显示对话框。

答案 1 :(得分:0)

我遇到了同样的问题。该对话框闪烁可见然后消失。它已经是 TopMost,我尝试了另一个技巧,在调用 showdialog 之前将其设置为可见然后不可见,但没有任何效果。

然后我检查了另一个运行良好的对话框,它的 ControlBox = true。我试过了,它奏效了!

答案 2 :(得分:-1)

  Dim frmOptions As New YourFormClass()
  Dim res As DialogResult = frmOptions.ShowDialog(me)
相关问题