Form.Dispose()调用控件里面的Dispose()?

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

当您在窗体上调用Dispose时,它将为其Controls集合中的每个控件调用Dispose 。 那些控件反过来也会这样做,所以最后应该调用所有控件的Dispose方法。 请注意,这不是基于控件是否存在于设计器中; 它基于在完成对Dispose的调用时在窗体的Controls集合中找到的Controls实例。

唯一可以看到这种情况不会发生的情况是,如果你自己创建一个容器控件并重写Dispose而不将调用传播到基类或迭代所包含的控件并调用它们上的Dispose

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

 protected override void Dispose(bool disposing) { if(disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing) } 

base.Dispose(); 呼叫将负责清理添加到表单的控件。