我有一个表单,这是用户可以使用的主要表单。当用户按下按钮时,会加载另一个表单(显示客户列表等)。
当我退出客户表单,然后再次单击该按钮时,出现“无法访问已处置对象”错误消息。
有什么想法吗?我是初学者。
custForm custForm = new custForm();
private void button5_Click(object sender, EventArgs e)
{
custForm.Show();
}
答案 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();
}