我。关闭不起作用

时间:2011-09-22 09:27:57

标签: vb.net forms

我正在使用VB.net。 我今天将应用程序连接到数据库时出现问题所以我想添加一个错误处理来关闭表单。

问题在于,当我将Me.close放入表单时,此表单仍处于打开状态。我使用Form.Closing事件处理程序来验证它是否已被调用,然后逐步运行我的应用程序,显示事件处理程序已被调用,但应用程序继续运行并且错误显示给用户。

有没有人知道如何在不关闭应用程序的情况下正确关闭表单?

3 个答案:

答案 0 :(得分:6)

Close 关闭表单,但前提是它没有更多代码可以运行。

也就是说,要关闭表单需要满足两个条件:

  • Close必须被称为
  • 任何仍在运行的方法都必须保留

我怀疑另一种方法仍在运行代码,例如循环或其他导致表单保持打开的代码。

此外,一旦您开始在其他地方访问其成员表单,表单将自动重新打开,因为VB具有令人愤怒的属性来自动实例化表单。

答案 1 :(得分:1)

您可以查看表单未被关闭的原因。

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

答案 2 :(得分:0)

从技术上讲,表单已关闭但未处理,这意味着您仍然可以访问该对象,但其中的所有控件都无法再访问。

所以你必须从某个地方调用dispose才能完全摆脱它。