使用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内容所致!