问题描述:首先有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
1、Dispose的意思是释放资源,初始化后再dispose当然会消失。
2、不能用dispose代替close,因为close本身是有若干操作的,你直接释放掉了没报错就已经万幸了。
3、c#有GC去统一回收资源,没事儿别dispose。