foreach+Control.Controls无法一次性移除所有子控件解决方法

使用foreach+Control.Controls移除所有Button:

foreach (Control con in panel1.Controls)
    panel1.Controls.Remove(con);

结果发现只移除了10个,界面还剩下10个!改用for循环:

for (int i = 0; i < panel1.Controls.Count; i++)
    panel1.Controls.RemoveAt(i);

结果同上,正确的代码应为:

for (int i = panel1.Controls.Count - 1; i >= 0; i--)
    panel1.Controls.RemoveAt(i);

究其原因,是调用Remove或RemoveAt方法时,也改变了Controls内容所致!

猜你喜欢

转载自blog.csdn.net/ertcmmy/article/details/84444184
今日推荐