我正在使用VB.net。我今天在连接应用程序到数据库时遇到了问题,所以我想添加一个错误处理来关闭表单。
问题是,当我把Me.close
在一个表格,这个表格仍然打开。我使用Form.Closing
事件处理程序来验证它是否被调用,然后一步一步地运行我的应用程序,这表明事件处理程序已被调用,但应用程序仍在继续,并且错误出现在用户面前。
有没有人知道如何正确地关闭表单而不关闭应用程序?
Close
将关闭一个表单,但只有当它没有更多的代码运行。
也就是说,表单关闭需要满足两个条件:
-
Close
必须称为 - 任何仍在运行的方法必须留在
我怀疑另一个方法仍然在运行代码,例如一个循环或其他代码,导致表单保持打开。
此外,由于VB的一个令人恼火的属性——自动实例化表单,一旦您开始在其他地方访问它的成员表单,窗体将自动重新打开。
你可以检查表单没有关闭的原因。
Private Sub Form1_Closing(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) _
Handles MyBase.FormClosing
MsgBox(e.CloseReason.ToString)
End Sub
您可以向Form_Closing事件添加以下内容e.Cancel将关闭打开的操作。但首先检查原因。
Private Sub Form1_Closing(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) _
Handles MyBase.FormClosing
e.Cancel = True
End Sub
从技术上讲,窗体是关闭的,但没有被处理,这意味着您仍然可以访问对象,但其中的所有控件都不再可访问。
所以你必须从某处调用dispose来完全摆脱它。