Form_Load事件未触发求助:全局窗体重复加载异常排查
VB全局窗体Form_Load事件偶发未触发问题解决
你的猜测完全正确:VB中直接使用类名访问的全局窗体默认实例,在调用Unload Me后,偶尔会因为内部引用未被彻底清除,导致窗体实例仍驻留在内存中。此时再次调用frmProduct.Show,只是将已存在的实例显示出来,不会重新执行Form_Load事件。
正确关闭窗体的方案
- 彻底销毁默认实例:在窗体的
Form_Unload事件中,添加实例置空的代码,确保窗体被完全释放:Private Sub Form_Unload(Cancel As Integer) Set frmProduct = Nothing End Sub - 手动管理窗体实例:放弃使用默认全局实例,改为手动创建和销毁实例,从根源上避免生命周期混乱:
Dim productForm As New frmProduct productForm.ProductID = 548 productForm.Show 1 Unload productForm Set productForm = Nothing - 清理外部引用:检查是否有其他模块、窗体或类持有对该窗体的引用(比如模块级变量存储了窗体对象),这些引用会阻止VB销毁实例,需要在卸载前清除所有外部引用。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

