关闭另一个winform上的winform from按钮.表单不会关闭



我的应用程序上有两个表单。我有一个打开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

根据您的描述,我假设在显示带有按钮的表单之前,您已经创建并显示了欢迎表单。

这行代码:"将欢迎表格改为新的frmWelcomePage"

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

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

如果我没有记错的话,你应该可以删除那一行,然后使用frmWelcomPage.Close.

您需要将第一个表单(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的实例。