Vb.net 在vb中关闭所有窗体

Vb.net 在vb中关闭所有窗体,vb.net,winforms,Vb.net,Winforms,如何关闭所有表单 我使用wpfvb2010 加载我使用的其他表单,如 Private frm As MainWindow = New MainWindow 要打开窗口,我使用了frm.Show() 要关闭它,我使用frm.close() 现在我有两种形式,像form1和form2 当我点击按钮时,我想打开form2-好的,很简单 当我使用按钮打开form2时,如何从form2关闭form1 当我使用 Private frm As form1 = New form1 frm.Close(

如何关闭所有表单


我使用wpfvb2010

加载我使用的其他表单,如

Private frm As MainWindow = New MainWindow 
要打开窗口,我使用了
frm.Show()
要关闭它,我使用
frm.close()


现在我有两种形式,像form1和form2

当我点击按钮时,我想打开form2-好的,很简单

当我使用按钮打开form2时,如何从form2关闭form1

当我使用

Private frm As form1 = New form1 
frm.Close()

它就像一个cricle,不能关闭

最简单的方法是为Form2创建一个构造函数,在创建时引用Form1的实例。Form2的新实例可以保留该引用,并在需要时关闭Form1的实例

Public Class Form2

    Private Property formOne As Form1

    Public Sub New()
    End Sub

    Public Sub New(Form1 frm)
        formOne = frm
    End Sub

    Public Sub CloseFormOne()
        If formOne != null Then
            formOne.Close()
        End If
    End Sub

End Class

项目+属性,应用程序选项卡,将关闭模式更改为“上次表单关闭时”。这可确保在关闭所有窗口之前,您的应用不会退出

现在您可以编写如下代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim frm As New Form2
    '' Optional: keep it in the same spot
    frm.StartPosition = FormStartPosition.Manual
    frm.Location = Me.Location
    frm.Size = Me.Size
    '' Display the form
    frm.Show()
    '' Close the current form
    Me.Close()
End Sub