foreach (Control a in pictureBox1.Controls)
{
pictureBox1.Controls.Remove(a);
}
在使用代码动态删除控件时,会导致遍历不全漏删的情况。
关键是这段代码可能不会报错,简直坑爹。
错误原因在“foreach循环中不能修改集合元素的值”
当Remove一个控件后,剩下控件的索引会发生变化。
解决方法:
1.使用
pictureBox1.Controls.Clear();
来删除全部控件。
2.需要删除部分/特定控件时使用
int k = pictureBox1.Controls.Count;
for (int i = k-1; i >=0; i--)
{
Control a=pictureBox1.Controls[i];
pictureBox1.Controls.Remove(a);
}
注意循环从末往前。