首页 新闻 搜索 专区 学院

在关闭窗体时调用Dispose方法的问题

0
悬赏园豆:5 [已关闭问题] 关闭于 2016-01-06 11:05

问题描述:首先有MainForm(主窗体),ChildForm(子窗体);

1 //在MainForm窗体中的按钮点击事件中实例化ChildForm窗体
2 ChildForm childform = new ChildForm();
3 childform.ShowDialog();
//在ChildForm窗体的按钮点击事件中关闭窗体(用Dispose();)
this.DisPose();

结果:MainForm窗体会闪烁

 

在网上找了很多帖子,感觉都不太靠谱,最后问题解决了,但是不清楚具体原因,哪位大侠帮帮忙告知具体原因,感激不尽

 

解决方法:

在ChileForm窗体的按钮点击事件中使用this.Close();

this.Close();
//注释掉Dispose()
//this.Dispose();

然后在MainForm窗体中的按钮点击事件中Dispose();

//在MainForm窗体中的按钮点击事件中实例化ChildForm窗体
ChildForm childform = new ChildForm();
childform.ShowDialog();
//加上这一句
childform.Dispose();

然后窗体就不闪烁了

网上有一哥们跟我问题很类似,若感觉我没描述清楚的可以看下

http://bbs.csdn.net/topics/120051430

问题补充:

不能在初始化ChildForm窗口加后面Dispose();这一句,要不然ChildForm窗口会闪现然后又消失

zhyue93的主页 zhyue93 | 初学一级 | 园豆:191
提问于:2015-12-26 15:40
< >
分享
所有回答(1)
0

1、Dispose的意思是释放资源,初始化后再dispose当然会消失。

2、不能用dispose代替close,因为close本身是有若干操作的,你直接释放掉了没报错就已经万幸了。

3、c#有GC去统一回收资源,没事儿别dispose。

为森 | 园豆:379 (菜鸟二级) | 2015-12-27 00:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册