3

如何在退出辅助表单时重新加载主表单?例如,如果 frmMain 是主窗体,而您将其隐藏以加载另一个名为 GenerateNumbers 的窗体,那么当用户退出 GenerateNumbers 时如何返回 frmMain?

4

3 回答 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 回答