我在VB.Net中创建了一个应用程序。使用Showdialog()方法显示子表单,以便在子项关闭之前无法访问父项。
我需要在每次关闭时处理子表单,以便删除它包含的信息:为此,我在子表单的结束事件中放置了“Me.Dispose()”。
然而,经常(并非总是)当孩子关闭时,父母会被最小化,这不是我想要的。
有没有人知道如何阻止这种情况发生?感谢所有帮助。
答案 0 :(得分:2)
更好的方法是将模态窗口包装在using语句中,而不是在窗体的结束事件中使用Me.Dispose。例如,在您的父表单中执行以下操作:
Using frm As New Form1
frm.ShowDialog()
End Using
答案 1 :(得分:1)
然而,经常(并非总是)儿童关闭时,父母会被最小化
它没有被最小化,它消失在另一个应用程序的窗口后面。最常见的是调试时的Visual Studio。这里出现的问题是,在Winforms有机会重新启用主窗口之前,您会破坏表单太早。 Windows窗口管理器现在被迫找到另一个窗口来聚焦。您的应用中的所有窗口都没有资格,因为它们仍处于禁用状态,因此它会选择另一个应用的窗口。如果那个窗口足够大(“不总是”的情况)那么它会与你的窗口重叠并使它消失,让你觉得它被最小化了。
您可以通过正确的方式解决此问题,在 ShowDialog返回后设置对话框。始终使用Using语句来执行此操作。锅炉板代码是:
Using dlg = New YourDialogFormClass
If dlg.ShowDialog() = DialogResult.Ok Then
'' Use the dialog results
''...
End If
End Using '' <=== It gets disposed here