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();
呼叫将负责清理添加到表单的控件。