这样做的一种方法是向 Form2 添加一个属性。我假设您有两个表单让我们称它们为 Form1 和 Form2。在 Form1 的代码中的某处,您声明了 Form2 的一个实例 ..
Dim frm2 As New Form2
并且在某些时候您希望将 Form2 显示为模式窗口 ..
frm2.ShowDialog()
现在让我们看看 Form2 代码
我在这里假设您有一个重置表单和关闭表单的按钮,您只需单击右上角的表单关闭按钮,也许您也有一个关闭表单的按钮。考虑 Form2 的以下代码
Public Class Form2
Friend Property resetOnClose As Boolean = False
Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click
resetOnClose = True
Me.Hide()
End Sub
Private Sub btnclose_Click(sender As Object, e As EventArgs) Handles btnclose.Click
resetOnClose = False
Me.Hide()
End Sub
End Class
有一个名为resetOnclose 的属性,它是一个布尔类型。如果单击重置按钮,则该属性设置为True 如果单击关闭按钮,则resetOnClose 属性设置为false。
在所有这些代码中,frm2 是隐藏的——没有关闭。这意味着表单及其resetOnclose 属性仍可用于Form1。好了,现在看看 Form1 代码..
Public Class Form1
Dim frm2 As New Form2
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Shown
frm2.ShowDialog()
Do
If frm2.resetOnClose Then
frm2.Close()
frm2 = New Form2
frm2.ShowDialog()
Else
frm2.Close()
End If
Loop Until frm2.resetOnClose = False
End Sub
End Class
对于本例,frm2 在 Form1 显示后立即打开,但您可以将相关代码放在任何需要的地方
在Form1.Shown 代码中,您将看到一个循环。只要resetOnClose 是True,循环就会继续循环。当frm1 以模态方式显示时,此Form1 代码中的执行将等到frm2 被隐藏或关闭。接下来,Form1 代码检查resetOnClose 属性是真还是假。如果为假,frm2 将关闭并且循环终止。如果该属性为真,frm2 将被关闭并在其默认状态下重新分配 Form2 的新实例。
瞧!