foreach ( Control control in panel1.Controls)
{
panel1.Controls.Remove(control);
}总共有10个控件,却只能删除5个隔一个删除一个,不解中;foreach ( Control control in panel1.Controls)
{
MessageBox.Show(control.Name);
}Show得10个控件名字foreach ( Control control in panel1.Controls)
{
panel1.Controls.Remove(control); MessageBox.Show(control.Name);
}这样却只Show得5个控件名?????????怎么才能把控件全部删完呢
{
panel1.Controls.Remove(control);
}总共有10个控件,却只能删除5个隔一个删除一个,不解中;foreach ( Control control in panel1.Controls)
{
MessageBox.Show(control.Name);
}Show得10个控件名字foreach ( Control control in panel1.Controls)
{
panel1.Controls.Remove(control); MessageBox.Show(control.Name);
}这样却只Show得5个控件名?????????怎么才能把控件全部删完呢
while(panel1.Controls.enumerator.next())
{
Control control=panel1.Controls.Current;
......
}
的结构。在 Controls 等这类 Collection 中,枚举使用一个整数下标递增 1 来完成,就是说如果上一次返回的是第4个元素,那么next()就将这个下标指向5,从而 Current 属性返回第5个对象。当指针指向第4个的时候,如果你删除第4个元素,那么队列中从第5个开始所有元素都向前排了一位,但是枚举器还是指向4,程序还是照样会执行 next()。你的问题的解决:1.
foreach ( Control control in panel1.Controls)
{
MessageBox.Show(control.Name);
}
panel1.Controls.Clear();Clear 就够了。
2.
while(panel1.Controls.count()>0)
{
Control control= panel1.Controls[0];
panel1.Controls.RemoveAt(0);
MessageBox.Show(control.Name);
}
顺序Remove与foreach冲突。
Control control=panel1.Controls.enumerator.Current;