从表单中删除控件(不会点击我想要删除的每个控件)

时间:2015-05-15 22:36:56

标签: c# forms controls dynamically-generated

我动态地将一些控件添加到我的表单中并且它工作得很好但是当我想再次删除它们时,它只会以奇怪的(随机)模式删除其中的一些(这里有2个控件,其中有2个,... )。

我尝试使用:

foreach (Control item in this.Controls.OfType<Control>())
        {
            if (item.Tag == "potentiallyRemove")
                this.Controls.Remove(item);
        }

是的,我要删除的控件都设置了“Tag”属性。

我还试图只删除PictureBoxes:

foreach (Control item in this.Controls.OfType<PictureBox>())
        {              
                this.Controls.Remove(item);
        }

我不想使用this.Controls.Clear(),因为我有一个我不想删除的标题行。

这是一个错误或类似的东西,如果是,是否有任何解决方法?

1 个答案:

答案 0 :(得分:1)

避免错误:将控件添加到数组中,然后将其删除。

试试这个:

    List<Control> controlsToBeRemoved = new List<Control>();
    foreach (Control item in this.Controls.OfType<PictureBox>())
    {
        controlsToBeRemoved.Add(item);
    }

    foreach (Control item in controlsToBeRemoved)
    {
        this.Controls.Remove(item);
    }