foreach (Control con in panel1.Controls)
{ panel1.Controls.Remove(con); }
我先是在panel1里动态生成了一组picturebox,现在需要删除它们,按照上面的代码,执行后重新动态生成新的一组picturebox,但是为什么旧的picturebox有些还在,而且更怪异的是第一组picturebox中的奇数没有了,偶数的还在。
诚心求教,望高人解答
{ panel1.Controls.Remove(con); }
我先是在panel1里动态生成了一组picturebox,现在需要删除它们,按照上面的代码,执行后重新动态生成新的一组picturebox,但是为什么旧的picturebox有些还在,而且更怪异的是第一组picturebox中的奇数没有了,偶数的还在。
诚心求教,望高人解答
{ panel1.Controls.Remove(con); }
是这样执行的: 假设panel1.Controls 有控件 1 2 3 4 5第一次 删除 索引 0 的 控件 1==》 panel1.Controls 有控件 2 3 4 5
此时 索引会++
第2此删除 索引 1 的 控件3 ==》 panel1.Controls 有控件 2 4 5
此时 索引会++
第3此删除 索引 2 的 控件5 ==》 panel1.Controls 有控件 2 4
退出循环==》 你可以这样操作:for (int i=0;i<panel1.Controls.Count;i++)
{ panel1.Controls.Remove(panel1.Controls[i]);
i--; // 让索引减一 }
for (int i = 0; i < u; i++)
{
if (panel1.Controls[i].GetType().Name.Equals("PictureBox"))
{
panel1.Controls.RemoveAt(i);
i--;
u--;
}
}简单试了下,可以