我.接近是行不通的



我正在使用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来完全摆脱它。

最新更新