无法访问已置位对象

时间:2013-11-17 20:19:49

标签: c# winforms

我有一个表单,这是用户可以使用的主要表单。当用户按下按钮时,会加载另一个表单(显示客户列表等)。

当我退出客户表单,然后再次单击该按钮时,出现“无法访问已处置对象”错误消息。

有什么想法吗?我是初学者。

 custForm custForm = new custForm();
    private void button5_Click(object sender, EventArgs e)
    {
        custForm.Show();
    }

2 个答案:

答案 0 :(得分:1)

您无法重新使用已经处置的实例(请参阅IDisposable)。您必须创建另一个表单的新实例才能再次打开它。

答案 1 :(得分:1)

问题很简单。您在click方法之外声明了表单变量。这是一个类实例变量,这意味着它在包含的类的每个方法中都是可见的。

但是当你通过它自己的按钮关闭custForm时,这个变量指向一个被处置的对象,这意味着该变量指向的数据区域已被释放,并且可供程序的其他部分重用。

运行时错误说明了一切。您无法访问此区域。

可能的解决方法是检查属性IsDisposed,如果返回true则重新创建表单

custForm cf = new custForm();
private void button5_Click(object sender, EventArgs e)
{
    if(cf == null || cf.IsDisposed == true)
         cf = new custForm();

    cf.Show();
}