首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Form.Dispose()调用Dispose()内部的控件吗?

Form.Dispose()调用Dispose()内部的控件吗?
EN

Stack Overflow用户
提问于 2010-09-09 02:57:33
回答 2查看 3.7K关注 0票数 9

当我创建一个表单时,自动生成的代码不包含覆盖的Dispose方法。这是否意味着没有为窗体中的所有控件调用Dispose?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-09 03:00:17

在窗体上调用Dispose时,它将为其Controls集合中的每个控件调用Dispose。这些控件将依次执行相同的操作,因此最终所有控件的Dispose方法都应该已被调用。请注意,这不是基于控件是否存在于设计器中;而是基于完成对Dispose的调用时在窗体的Controls集合中找到的控件实例。

如果您自己创建一些容器控件并覆盖Dispose,而不将调用传播到基类,或者迭代所包含的控件并在它们上调用Dispose,那么这种情况就不会发生。

票数 15
EN

Stack Overflow用户

发布于 2010-09-09 03:00:08

应该是这样的。您可能需要查看YourForm.designer.cs文件。它看起来像这样:

代码语言:javascript
复制
protected override void Dispose(bool disposing)
{
   if(disposing && (components != null))
   {
      components.Dispose();
   }
   base.Dispose(disposing)
}

base.Dispose();调用将负责清理添加到窗体中的控件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3671013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档