我的应用程序上有两个表单。我有一个打开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)
注:Me
是Form1
的实例。