在Visual Basic中退出时打开和关闭表单?

时间:2012-12-10 23:46:14

标签: vb.net winforms

如何在退出二级表单时重新加载主表单?例如,如果frmMain是主窗体并且你隐藏了加载另一个名为GenerateNumbers的窗体,那么当用户退出GenerateNumbers时你如何得到frmMain?

3 个答案:

答案 0 :(得分:3)

最好的方法是在子表单的Closing事件中添加一个事件处理程序。这样,主表单将在子表单关闭时收到通知,然后它可以重新显示自己。例如:

AddHandler frmChild.Closing, AddressOf ChildClosing
frmChild.Show()
Me.Hide()

'....

Private Sub ChildClosing(sender As Object, e As EventArgs)
    RemoveHandler CType(sender, Form).Closing, AddressOf ChildClosing
    Me.Show()
End Sub

正如其他人所说,如果您使用ShowDialog方法显示子表单,则更容易。事实上,如果你这样做,那么真的没有理由隐藏主表单,你可以将主表单作为所有者传递给对话框:

frmChild.ShowDialog(Me)

提示:如果不隐藏主窗体,请将子窗体的起始位置属性设置为所有者的中心。

或者,您可以提供对主窗体的引用,以便它可以在关闭时使主窗体可见,但我会说这是最不可取的选项。

答案 1 :(得分:1)

如果您使用ShowDialog调用辅助表单,则在从ShowDialog方法返回的辅助表单后,您可以使主表单可见。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim frm2 As Form2 = New Form2
    Me.Hide()
    frm2.ShowDialog()
    Me.Show()
End Sub

答案 2 :(得分:0)

如果您将辅助表单显示为模式,则应该很容易。无论你用什么来展示二级形式,都要把它放在一边:

frmMain.Visible = False
frmGenerateNumbers.ShowDialog()
frmMain.Visible = True