【发布时间】:2019-03-31 08:30:03
【问题描述】:
我有一个非常简单的表单,它使用一个非常简单的类来处理一些事情。而那个类有一个Class_Terminate 子来清理自己。但是,当表单关闭时,它似乎并没有被触发。
MCVE:
Form 1,一个名为 Text0 的文本框,没有其他控件
Private myClass1 As Class1
Private Sub Form_Load()
Set myClass1 = New Class1
myClass1.InitForm Me
End Sub
类 Class1
Public theForm As Form
Private WithEvents SomeTextbox As TextBox
Public Sub InitForm(frm As Form)
Set theForm = frm
Set SomeTextbox = frm.Text0
End Sub
Private Sub Class_Terminate()
MsgBox "Class1 terminated succesfully"
End Sub
但是,当我关闭表单时,类终止处理程序不会触发。
我尝试取消设置类中的 Form 对象:
Private Sub Form_Unload(Cancel As Integer)
Set myClass1.theForm = Nothing
End Sub
但随之而来的是混乱:类终止处理程序在关闭表单后触发,但之后立即访问硬崩溃而没有任何错误消息!
【问题讨论】: