【问题标题】:VB.net Framework 3.5 OnClose() or OnDestroy()VB.net Framework 3.5 OnClose() 或 OnDestroy()
【发布时间】:2014-01-03 20:21:21
【问题描述】:

我很抱歉,因为我认为这个问题非常基本。我希望在表单关闭时对其进行一些清理。其他语言有OnClose()OnDestroy() 方法。使用 .NET 3.5 框架的 VB.net 的等价物是什么?

【问题讨论】:

  • 已经有一段时间了,因此为什么这是评论而不是答案,但我相信您可以使用 .Dispose() 方法。
  • 如果是 WinForms,只需覆盖 OnFormClosing 方法。
  • 使用 OnFormClosed 代替。那它就真的死了。
  • DHT 是正确的。但是控件上的 Dispose() 是不可覆盖的。然而,控件为您提供 Dispose 事件。 FormClosed 事件仅表示表单已关闭,尚未从内存中卸载。如果只是关闭或隐藏关闭的表单,则不会处理它,因为 form.Show() 仍然可以在该实例上使用,它仍然在内存中。要销毁表单(或从 Control 继承的任何对象) - 应使用 Dispose() 方法,(因此也应在 Dispose 事件中进行绝对清理)。 - 在下面回答。

标签: vb.net .net-3.5


【解决方案1】:

System.Windows.Forms.Form 实现了 IDisposable 接口。就像任何实现 IDisposable 的对象一样,清理代码最好放在 Dispose 事件或例程中。

请参阅以下示例,其中显示了以下事件处理程序:

  • 事件 Form.Disposed
  • 事件 Form.FormClosed
  • 事件 Form.FormClosing

    公开课表1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
        REM     we are loaded... probably  =)
    
    End Sub
    
    Private Sub Form1_Disposed(sender As Object, e As System.EventArgs) Handles Me.Disposed
    
        REM     Put cleanup code here...
    
        REM     when we are done here the form will be completly disposed of
    
    End Sub
    
    Private Sub Form1_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    
        REM     Here the form is CLOSED but not disposed YET!
    
    End Sub
    
    
    Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    
        REM     Here the form is CLosing, but has not closed yet, and the closing behavior itself can actually be aborted:
    
        REM     To cancel the closing of a form you can:
    
        ' e.Cancel = True 
    
    End Sub
    
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.Dispose()
    End Sub
    

    结束类

因此,您也可以通过 Using 语句进行处理: Using 关键字可用于实现 IDisposable 接口的所有对象。

 using frm as new form() ' A new form is created here
     frm.ShowDialog()  ' form is displayed as a Modal form (  dialog ) 
 end using             ' form is Disposed() of here.

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 2010-11-30
    • 2015-10-25
    • 2019-05-10
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多