如何在退出辅助表单时重新加载主表单?例如,如果 frmMain 是主窗体,而您将其隐藏以加载另一个名为 GenerateNumbers 的窗体,那么当用户退出 GenerateNumbers 时如何返回 frmMain?
问问题
2838 次
3 回答
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)
提示:如果不隐藏主窗体,请将子窗体的起始位置属性设置为以所有者为中心。
或者,您可以提供对主窗体的引用,以便它可以使主窗体在关闭时可见,但我会说这是最不可取的选择。
于 2012-12-11T00:01:21.373 回答
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
于 2012-12-10T23:56:17.660 回答
0
如果您将辅助形式显示为模态,那应该很容易。把它放在你用来显示次要形式的任何事件中:
frmMain.Visible = False
frmGenerateNumbers.ShowDialog()
frmMain.Visible = True
于 2012-12-10T23:55:46.990 回答