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);
}
注意循环从末往前。
本文探讨了在C#中动态删除PictureBox控件中的子控件时遇到的问题及解决方案。指出使用foreach循环直接删除控件可能导致遗漏,并提供两种有效方法:一是清空所有控件;二是逆序遍历删除特定控件。
1165

被折叠的 条评论
为什么被折叠?



