无法访问已释放的对象

gsmlove 2008-12-09 06:25:42
在Form1中定义了Form2 form2=null;

第一步:
点击button1
if (form2==null)
form2=new Form2();
form2.TopLevel = false;
this.panel.Controls.Add(form2);

第二步:
点击button2
this.panel.Controls.Remove(form2);
form2.Close();

第三步:
再次点击button1
在this.panel.Controls.Add(form2);这句上抛出异常
“无法访问已释放的对象。对象名:“form2””

不知道什么原因,望高手解答!

分不够,追加!
...全文
418 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdfeng000001 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 net5i 的回复:]
虽然释放掉了,但是form2这个对象实例还没有被指为null
所以:
if (form2==null)
form2=new Form2();
这个if不会进去

正确的是:
if (form2==null || form2.IsDisposed)
form2=new Form2();
[/Quote]

感谢3楼哦~~~帮了我大忙啦
net5i 2008-12-09
  • 打赏
  • 举报
回复
虽然释放掉了,但是form2这个对象实例还没有被指为null
所以:
if (form2==null)
form2=new Form2();
这个if不会进去

正确的是:
if (form2==null || form2.IsDisposed)
form2=new Form2();
net5i 2008-12-09
  • 打赏
  • 举报
回复
搂主在第二步:
this.panel.Controls.Remove(form2);
form2.Close();
已经把Form2给释放掉了,所以会出异常
xu_2007 2008-12-09
  • 打赏
  • 举报
回复
form2.Close();
这句不要或者改成FORM2.HIDE();

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧