故事的起因:因为需要在每次加载窗体时,删除掉以前遗留的控件(控件为动态生成),故写下如下方法
private void RemoveAllBut(Control comtrol)
{
for (int i = 0; i <comtrol.Controls.Count; i++)
{
Control con=comtrol.Controls[i];
if (con is SimpleButton) //判断控件是否为simpleButton 控件 这是一个DEV控件 相当于Button
{
comtrol.Controls.RemoveAt(i);
}
}
}
代码是没有问题的,但是每次执行完成后只会删除其中的一半控件,且是跳着删除的(删除控件1 3 5 7……)
然调试后发现 Controls.RemoveAt 之后,comtrol.Controls.Count也会发生变化,所以 此时的Controls[i] 也不是上次