当我创建一个表单时,自动生成的代码不包含覆盖的Dispose方法。这是否意味着没有为窗体中的所有控件调用Dispose?
发布于 2010-09-09 03:00:17
在窗体上调用Dispose时,它将为其Controls集合中的每个控件调用Dispose。这些控件将依次执行相同的操作,因此最终所有控件的Dispose方法都应该已被调用。请注意,这不是基于控件是否存在于设计器中;而是基于完成对Dispose的调用时在窗体的Controls集合中找到的控件实例。
如果您自己创建一些容器控件并覆盖Dispose,而不将调用传播到基类,或者迭代所包含的控件并在它们上调用Dispose,那么这种情况就不会发生。
发布于 2010-09-09 03:00:08
应该是这样的。您可能需要查看YourForm.designer.cs文件。它看起来像这样:
protected override void Dispose(bool disposing)
{
if(disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing)
}base.Dispose();调用将负责清理添加到窗体中的控件。
https://stackoverflow.com/questions/3671013
复制相似问题