如何清除()控件而不会导致内存泄漏

阅读有关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(); 

无需遍历控件的子代并处理它们,这已经自动发生。