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

表单闪烁打开并立即关闭。如果我使用Show () 而不是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

ShowDialogFormClosing之间。

  • CloseReason是“无”
  • 负载运行到最后,VisibleChanged 也是如此(尽管从未调用过Activated)。
  • 没有任何异常被抛出的迹象。
  • Intellitrace 没有显示任何情况。
  • 表单关闭后,DialogResult为“Cancel”(表单或其设计器中没有对 DialogResult 的引用)
  • 我没有做任何明确的线程

对于正在发生的事情或如何找出问题的任何建议,我将不胜感激。

谢谢。

4

4 回答 4

3

在我的情况下,我DialogResult将加载事件的属性设置为Cancel,这导致对话框在加载后立即关闭。我已将其设置为默认值 None,现在我只在Click真正需要关闭按钮时将其设置为其他值。

于 2019-03-07T12:10:54.427 回答
2

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

Load方法中有一行内容为

Me.Text = ""

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

于 2012-11-14T17:19:39.203 回答
1

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

就我而言,我更改了 ShowDialog() 调用以使用我的应用程序的主窗口作为父窗口,并且问题解决了。

于 2018-06-04T21:24:11.107 回答
0

调试了几个小时,遇到了同样的问题。在我的情况下,可能的原因是父表单设置ShowInTaskbar = falseLoad事件,而我的表单在设计器中将此设置为 true。由于某种原因,这导致Cancel在初始化期间将对话结果设置为。

于 2021-06-21T11:48:43.443 回答