表格立即关闭

时间:2012-11-13 10:46:55

标签: winforms

    Dim details As New frmDetails(ID, JobID, True)
    details.ShowDialog()

表格闪烁并立即关闭。如果我使用显示()而不是 ShowDialog (),它会保持打开状态并且看起来很好。以下是我检查过的一些事情:

  • 突破 FormClosing 仅显示
  
    
      
        

System.Windows.Forms.Form.OnFormClosing           System.Windows.Forms.Form.CheckCloseDialog           System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FContinueMessageLoop           System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop
          System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner           System.Windows.Forms.Application.ThreadContext.RunMessageLoop           System.Windows.Forms.Application.RunDialog

                 

System.Windows.Forms.Form.ShowDialog

      
    
  
ShowDialog FormClosing 之间的

  • CloseReason 是“无”
  • 加载运行到最后, VisibleChanged (尽管已激活永远不会被调用)。
  • 没有任何异常被抛出的迹象。
  • Intellitrace没有显示任何内容。
  • 表单关闭后, DialogResult 为“取消”(表单或其设计器中没有对DialogResult的引用)
  • 我没有做任何明确的线程

我很欣赏任何关于发生了什么或如何寻找的建议。

感谢。

4 个答案:

答案 0 :(得分:2)

嗯,这可能没有任何好处,但这就是我解决问题的方法:

加载方法中有一行读取

Me.Text = ""

我不知道它在那里做了什么(这不是我的代码,谢天谢地),特别是因为稍后会再次设置该值,但是取消该行会阻止该形式神秘地关闭。去图。

答案 1 :(得分:1)

我有类似的问题。在我的情况下,这是由于没有在ShowDialog()上指定父窗口。与最顶层窗口关联的对话框,恰好是一个消失的组合框下拉列表。

在我的情况下,我更改了ShowDialog()调用以使用我的应用程序的主窗口作为父窗口,问题解决了。

答案 2 :(得分:1)

就我而言,我将load事件的DialogResult属性设置为Cancel,这导致对话框在Load之后立即关闭。我已将其设置为默认值None,现在,当我确实需要关闭按钮时,仅在按钮的Click事件上将其设置为其他值。

答案 3 :(得分:0)

针对同样的问题进行了几个小时的调试。就我而言,可能的原因是父表单在 ShowInTaskbar = false 事件中设置了 Load,而我的表单在设计器中将此设置为 true。出于某种原因,这导致对话框结果在初始化期间设置为 Cancel