【发布时间】:2014-09-08 17:01:03
【问题描述】:
我有一个 Windows 窗体 (VB/.NET),我想在单击特定按钮时打开它。它第一次正确打开,但在关闭它并尝试重新打开它后,我收到此错误:
“ObjectDisposedException 未处理:无法访问已处理的对象。对象名称:frm8100VI”
现在,我在调用它的 show() 方法之前创建了一个表单的新实例,所以我不知道它是如何处理的:
Dim form as New frm8100VI
form.show()
此代码在第一次调用时可以正常工作,但在关闭表单后再次无法正常工作,说明对象已被释放。要关闭表单,我只需调用 me.close()
【问题讨论】:
-
frm8100VI 构造函数/事件中一定有一些东西使自己无效,我认为你应该发布更多关于该类的代码。那些行显然不能产生一个已经被释放的对象。
-
让我感到困惑的是,该消息表明该类本身已被处置... frm8100VI 是一个类...我认为这不可能,我以为您只能处置对象,或类的实例。我检查了项目中该名称的冲突使用,但没有发现。
-
一个表单是一个类;错误消息
Cannot access a disposed object表示对象 - 而不是类 - 已被处置。尝试使用像 frm 或 f 这样的变量名而不是类型名(表单) -
To close the form all I do is call me.close()处理它。你不能只是再次form.Show,而是创建一个新实例。这样就不需要额外的步骤来实际处理它们以释放资源。 -
Plutonix - 我确实创建了一个新实例...我在每次调用 from.Show() 之前执行“Dim form As New frm8100VI”。将对象名称更改为“f”没有任何区别,无论如何,谢谢。