如何清除()控件而不会导致内存泄漏
阅读有关Control.Clear();
导致内存泄漏(在MSDNvalidation),我想知道是否:
while (Controls.Count > 0) Controls[0].Dispose();
就足够了,还是我必须递归遍历控件中的所有控件?
还有什么理由去做Control.Clear();
之后? (因为我看到有人说某处)?
谢谢。
已发布的代码段是正确的。 不需要Clear(),Control.Dispose()方法已从Controls集合中删除控件。 这就是它的原因。
循环的不太令人担忧的版本是:
for (int ix = Controls.Count-1; ix >= 0; --ix) Controls[ix].Dispose();
无需遍历控件的子代并处理它们,这已经自动发生。