从另一个winform上的按钮关闭winform。表格不会关闭

时间:2013-07-29 21:41:02

标签: vb.net

我的申请表上有2个表格。我有打开TopMost,CenterScreen和Maximized的主窗体。然后我在这个屏幕上有另一个表单,当我按下按钮时弹出。第二个屏幕有一个导航到另一个屏幕的按钮,所以当我按下那个按钮时,第二个表格关闭,主表格也会关闭,所选的表格也会打开。

然而,第二个屏幕关闭正常,但我的主屏幕保持打开并处于活动状态,而被叫表单打开但未启用。我追踪发生了什么,问题是所有代码运行,但主屏幕似乎不想关闭。这是我的代码:

        Private Sub btnOpenDashboard_Click(sender As Object, e As EventArgs) Handles btnOpenDashboard.Click

    Dim welcomeForm As New frmWelcomePage

    If lblReportTitle.Text = "Employee Dashboard" Then

        Me.Close() 'This works
        welcomeForm.Close() 'This one remains open and active
        Globals.dsbEmployeeBoard.Select() 'This one opens but is not enabled


    End If


End Sub

2 个答案:

答案 0 :(得分:2)

我从您的描述中假设您已经在表单显示之前创建并显示了欢迎表单。

这行代码: “Dim welcomeForm As New frmWelcomePage”

正在创建欢迎页面的副本并关闭它。

您需要引用原始打开的文件,而不是创建新文件。

如果我没记错的话,你应该可以删除该行并使用frmWelcomPage.Close。

答案 1 :(得分:1)

您需要将第一个表单(Form1)的引用传递给第二个表单(Form2),这样在第二个表单中您可以关闭第一个表单,如下所示:

Public Class Form2 Inherits Form
Private _form1 As Form1

Public Sub New(form1 As Form1)
    Me.Form1 = form1
End Sub
End Class

Private Sub btnOpenDashboard_Click(sender As Object, e As EventArgs) Handles btnOpenDashboard.Click
    If lblReportTitle.Text = "Employee Dashboard" Then
        _form1.Close()
    End If
End Sub

然后,当您实例化Form2时,您会将引用传递给Form1,如下所示:

Dim form2 As New Form2(Me)

注意:MeForm1的实例。