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

Jua*_*uan 9 .net c#

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

Fre*_*örk 12

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

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