我的申请表上有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
答案 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)
注意:Me
是Form1
的实例。