我在 VB.Net 中创建了一个应用程序。使用 Showdialog() 方法显示子窗体,以便在关闭子窗体之前无法访问父窗体。
我需要在每次关闭子表单时对其进行处理,以便删除其中包含的信息:为此,我在子表单的关闭事件中放置了“Me.Dispose()”。
但是,通常(并非总是)当孩子关闭时,父母会被最小化,这不是我想要的。
有谁知道有什么方法可以阻止这种情况发生?感谢所有帮助。
我在 VB.Net 中创建了一个应用程序。使用 Showdialog() 方法显示子窗体,以便在关闭子窗体之前无法访问父窗体。
我需要在每次关闭子表单时对其进行处理,以便删除其中包含的信息:为此,我在子表单的关闭事件中放置了“Me.Dispose()”。
但是,通常(并非总是)当孩子关闭时,父母会被最小化,这不是我想要的。
有谁知道有什么方法可以阻止这种情况发生?感谢所有帮助。
更好的方法是将模态窗口包装在 using 语句中,而不是在表单的关闭事件中使用 Me.Dispose。例如,在您的父表单中执行以下操作:
Using frm As New Form1
frm.ShowDialog()
End Using
但是,通常(不总是)当孩子关闭时,父母会被最小化
它没有被最小化,它消失在另一个应用程序的窗口后面。调试时最常见的是 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