创建表单时,自动生成的代码不包含覆盖的Dispose方法。这是否意味着没有为表单中的所有控件调用Dispose?
答案 0 :(得分:12)
当您在表单上致电Dispose
时,会为其Dispose
集合中的每个控件调用Controls
。这些控件反过来会这样做,所以最后应该调用所有控件'Dispose
方法。请注意,这不是基于控件是否存在于设计器中;它基于在调用Controls
时表单的Dispose
集合中找到的控件实例。
唯一可以看到不会发生这种情况的情况是,如果您自己创建一个容器控件并覆盖Dispose
而不将调用传播到基类或迭代所包含的控件并调用{{1在他们身上。
答案 1 :(得分:4)
它应该。您可能需要查看YourForm.designer.cs文件。它看起来像这样:
protected override void Dispose(bool disposing)
{
if(disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing)
}
base.Dispose();
调用将负责清理添加到表单的控件。