vb.net关闭多个表单并打开另一个表单

时间:2016-01-28 17:47:47

标签: vb.net forms

我打开了2个表单,我当前的表单在对话框中。现在我要关闭那两个表格并打开另一个表格。

 Dim frmStg2 As New frmStageTwo
 Dim frmStg1 As New frmStageOne

        frmStg2.Show()
        Me.Close()
        frmStg1.Close()

但是这段代码似乎不起作用frmStageOne仍然打开并显示frmStageTwo但我无法查看该表单。

This is what happen

1 个答案:

答案 0 :(得分:0)

您正在尝试关闭尚未打开的表单实例。

当您使用New关键字时,您声明了一个对象的新实例(在这种情况下为Form),它具有自己的基类属性和字段版本。

要关闭已存在的表单实例,您可以遍历Application.OpenForms属性。

For Each frm As Form In Application.OpenForms
    If frm.GetType() Is GetType(frmStageOne) Then
        frm.Close()
    End If
Next

你实际上可以把它变成一种方法:

Public Sub CloseFormsOfType(ByVal TargetForm As Form)
    For Each frm As Form In Application.OpenForms
        If frm.GetType() Is TargetForm.GetType() Then
            frm.Close()
        End If
    Next
End Sub

...只需致电:

CloseFormsOfType(frmStageOne)