Winforms 表格立即关闭

Winforms 表格立即关闭,winforms,Winforms,窗体将闪烁打开并立即关闭。如果我使用Show()而不是ShowDialog(),它将保持打开状态并看起来很好。以下是我检查过的一些东西: 进入窗体关闭仅显示 System.Windows.Forms.Form.OnFormClosing System.Windows.Forms.Form.CheckCloseDialog System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafentiveMethods

窗体将闪烁打开并立即关闭。如果我使用Show()而不是ShowDialog(),它将保持打开状态并看起来很好。以下是我检查过的一些东西:

  • 进入窗体关闭仅显示
System.Windows.Forms.Form.OnFormClosing System.Windows.Forms.Form.CheckCloseDialog System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafentiveMethods.IMsoComponent.FContinueMessageLoop System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafentiveMethods.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和窗体关闭之间

  • CloseReason为“无”
  • Load运行到最后,正如VisibleChanged一样(尽管已激活从未被调用)
  • 没有任何异常被抛出的迹象
  • Intellitrace没有显示任何正在发生的事情
  • 表单关闭后,对话框结果为“取消”(表单或其设计器中没有对DialogResult的引用)
  • 我没有做任何显式线程
我很感激任何关于发生了什么或者如何去发现的建议


谢谢。

好吧,这可能对任何人都没有好处,但下面是我解决问题的方法:

Load方法中有一行

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

我不知道它在那里做了什么(谢天谢地,这不是我的代码),特别是因为稍后会再次设置该值,但是去掉该行可以阻止表单神秘地关闭。想想看。

我也有类似的问题。在我的例子中,这是因为没有在ShowDialog()上指定父窗口。与最上面的窗口关联的对话框,恰好是一个正在消失的组合框下拉列表


在我的例子中,我更改了ShowDialog()调用,将应用程序的主窗口用作父窗口,并解决了问题

在我的例子中,我将加载事件的
DialogResult
属性设置为
Cancel
,这导致加载后对话框立即关闭。我已经将其设置为默认值None,现在我只在确实需要关闭按钮时,在按钮的
单击
事件中将其设置为其他值。

是否在表单加载期间触发了控制事件(文本更改、验证等)。可能是关闭表单的事件之一?(仍然没有解释为什么Form.Show可以工作)您是否为此表单使用自定义构造函数?这是一个复杂的for,而且会发生很多事情,但是当我使用IntelliTrace运行时,我只看到在加载过程中生成了一个事件,该事件不调用Close(),不管怎样,我删除了该代码,问题仍然存在。此外,我在代码中找到了对Close()的所有调用,并在这些调用上设置了断点,但没有找到任何调用。正如你所说,这并不能解释Show()。我确实有定制的c-Tor,但我不确定它们会有什么不同:它们在加载之前被调用,对于Show()也是如此。
Me.Text = ""