从表单中删除控件(没有命中我想删除的每个控件)

Removing Controls from Form (Doesn't hit every Control I want to remove)

我正在向我的表单动态添加一些控件并且效果很好,但是当我想再次删除它们时,它只会以一种奇怪的(随机)模式删除其中的一些控件(这里有 2 个控件,那里有 2 个控件, ...).

我尝试使用:

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

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

我也试过只删除图片框:

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

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

这是一个错误还是类似的问题?如果是,是否有任何解决方法?

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

试试这个:

    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);
    }