Dim details As New frmDetails(ID, JobID, True)
details.ShowDialog()
表格闪烁并立即关闭。如果我使用显示()而不是 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.RunDialogSystem.Windows.Forms.Form.ShowDialog
。
我很欣赏任何关于发生了什么或如何寻找的建议。
感谢。
答案 0 :(得分:2)
嗯,这可能没有任何好处,但这就是我解决问题的方法:
加载方法中有一行读取
Me.Text = ""
我不知道它在那里做了什么(这不是我的代码,谢天谢地),特别是因为稍后会再次设置该值,但是取消该行会阻止该形式神秘地关闭。去图。
答案 1 :(得分:1)
我有类似的问题。在我的情况下,这是由于没有在ShowDialog()上指定父窗口。与最顶层窗口关联的对话框,恰好是一个消失的组合框下拉列表。
在我的情况下,我更改了ShowDialog()调用以使用我的应用程序的主窗口作为父窗口,问题解决了。
答案 2 :(得分:1)
就我而言,我将load事件的DialogResult
属性设置为Cancel
,这导致对话框在Load之后立即关闭。我已将其设置为默认值None,现在,当我确实需要关闭按钮时,仅在按钮的Click
事件上将其设置为其他值。
答案 3 :(得分:0)
针对同样的问题进行了几个小时的调试。就我而言,可能的原因是父表单在 ShowInTaskbar = false
事件中设置了 Load
,而我的表单在设计器中将此设置为 true。出于某种原因,这导致对话框结果在初始化期间设置为 Cancel
。