有多个线程(a https://stackoverflow.com/questions/1757116/remove-tabpage-dispose-or-clear-or-both, b https://stackoverflow.com/questions/1969024/does-calling-clear-disposes-the-items-also, c https://stackoverflow.com/questions/1378668/clearing-controls-from-flowlayoutpanel-not-calling-destructors等)关于这一事实Clear() .NET 组件容器中的项目不会Dispose他们(通过调用 Dispose(true).
最常见的是,恕我直言,清除后的组件在应用程序中不再使用,因此需要在从父容器中清除它们后显式地对其进行处置。
收藏也许是个好主意Clear
方法有一个 bool 参数dispose
当 true 时,在从列表中删除集合元素之前也会处理集合元素吗?
要求这样的修改是没有意义的,Windows Forms 团队已经解散很久了。它处于维护模式,仅考虑安全问题和操作系统不兼容问题。
否则,创建您自己的方法来执行此操作非常简单:
public static class ExtensionMethods {
public static void Clear(this Control.ControlCollection controls, bool dispose) {
for (int ix = controls.Count - 1; ix >= 0; --ix) {
if (dispose) controls[ix].Dispose();
else controls.RemoveAt(ix);
}
}
}
现在你可以写:
panel1.Controls.Clear(true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)