我有两种形式;一个叫做'赢',另一个叫'失'。 “赢”表单上有一个按钮,显示“损失”表单。点击此按钮时,两种形式都可见。当我关闭了“损失”的形式,然后点击“双赢”窗体上的按钮,我再次出现以下情况例外:c#winform编程
An unhandled exception has occured: Unable to access a disposed object ..object :form
请可能有人点我在正确的方向,所以我可以解决这个问题?
我有两种形式;一个叫做'赢',另一个叫'失'。 “赢”表单上有一个按钮,显示“损失”表单。点击此按钮时,两种形式都可见。当我关闭了“损失”的形式,然后点击“双赢”窗体上的按钮,我再次出现以下情况例外:c#winform编程
An unhandled exception has occured: Unable to access a disposed object ..object :form
请可能有人点我在正确的方向,所以我可以解决这个问题?
在引用它之前,您可以验证表单的IsDisposed属性。
E.g.关于“双赢”的形式按钮单击处理程序:
if (loss.IsDisposed)
return;
// do stuff with loss form
更新:我认为这是最好不要共享形式之间的控制。
这是因为你的'损失'表已经关闭并且已经处理完毕,所以不能再使用了。您需要创建窗体的新实例,像这样(不知道你的代码究竟是如何看起来):
this.loss = new LossForm();
this.loss.Show();
这不是你要一个很好的模式,但你可以挂接到的FormClosing事件,取消它,然后隐藏表单。这意味着表单不会自动处理,您可以再次致电演出。
把时间放在一边研究MVC架构 - 起初看起来很复杂,但它确实有帮助。
您是否确定您每次点击按钮时都会创建一个窗体的新实例... – 2011-01-24 13:14:26
肯定需要了解更多代码 – 2011-01-24 13:22:23
您想实现什么目标? '赢'的形式应该从'损失'形式检索一些数据? – 2011-01-24 13:39:36