控件在父窗口关闭时会有哪个事件被触发

xiuxianmajia 2008-07-17 10:11:26
是这样
我继承了DataGridView,希望在窗口关闭时在注册表中记录下列宽,然后下次再打开始恢复列宽
但是找来找去,只找到Dispose可用,但如果在窗口并未被垃圾回收器回收前又打开这个窗口,Disponse并不执行
现在我就凑合着关闭窗口就显示的Dispose一下,很难看

我现在需要一个在窗口Close时会被触发的控件的事件,请高手给点拨下哪个是呢,感激涕零!
...全文
99 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
paulin 2008-07-25
  • 打赏
  • 举报
回复
总结的不错~
xiuxianmajia 2008-07-17
  • 打赏
  • 举报
回复
另外:补充说下:我集成的是DataGridView,没有Close可继承

wf5360308,说的有道理,我没考虑到,马上改用XML
xiuxianmajia 2008-07-17
  • 打赏
  • 举报
回复
感谢vwxyzh! HandleDestroyed正是我需要的

总结下模态窗口和非模态窗口,算自己留个笔记加深印象:
1、
以ShowDialog()打开的模态窗口在Close时不会触发Disponse,即便是出了作用域也不会立即触发(这里强调“立即”,隐含的意思是当垃圾回收器运行时,Disponse还是会被触发的)
private void button1_Click(object sender, EventArgs e)
{
Form form1 = new Form();
form1.ShowDialog();
}
上面代码,即使出了button1_Click{....},form1.Disponse()也不会被执行


2、以Show()打开的非模态窗口在以上方面的表现都是反过来的。在Close时它的Disponse会被触发,下面的代码
class class1
{
Form form1 = new Form();

private void button1_Click(object sender, EventArgs e)
{
form1.Show();
}
}

第一次点button1程序运行没问题,而再点一次就会报错了,因为前一次close时实例已经不存在了,而换成模态窗口,是可以的
class class1
{
Form form1 = new Form();

private void button1_Click(object sender, EventArgs e) //点一白次也没问题
{
form1.ShowDialog();
}
}









guilin_gavin 2008-07-17
  • 打赏
  • 举报
回复
学习中
冷月孤峰 2008-07-17
  • 打赏
  • 举报
回复
一般都是用 FormClosed 和 FormClosing 这两个事件。

在注册表中记录下列宽
=====================
为什么不用XML呢,很多杀毒软件会监控注册表的
vwxyzh 2008-07-17
  • 打赏
  • 举报
回复
试一下HandleDestroyed
paulin 2008-07-17
  • 打赏
  • 举报
回复
closing事件中存取控件相关数据,存在xml文件中
rainxy2000 2008-07-17
  • 打赏
  • 举报
回复
Unload事件中。
smntbk 2008-07-17
  • 打赏
  • 举报
回复
在窗体的FormClosing事件中写不行么?
nextsea 2008-07-17
  • 打赏
  • 举报
回复
FormClosed 和 FormClosing 就行
zzyhuian06142 2008-07-17
  • 打赏
  • 举报
回复
Closing事件看看

111,074

社区成员

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

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

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