user2367311
user2367311

Reputation:

Removing a TextBox from the Controls collection has no effect

Basically what I do is: Add (n) textboxes via a button click. When I again click on it, this code runs:

foreach (Control c in this.Controls)
{
    TextBox tb = c as TextBox;
    if (tb != null)
    {
        this.Controls.Remove(tb);
        tb.Dispose();
    }
}

I than again add (n) textboxes, but every second item from the old textboxes remains. Any ideas?

Upvotes: 0

Views: 69

Answers (1)

Jan Dörrenhaus
Jan Dörrenhaus

Reputation: 6717

Removing items from the collection you are iterating on is a bad idea. Try this:

List<Control> toBeRemoved = new List<Control>();
foreach (Control c in this.Controls)
{
    if (c instanceof TextBox)
    {
        toBeRemoved.Add(c);
    }
}
foreach (Control c in toBeRemoved)
{
    this.Controls.Remove(c);
    c.Dispose();
}

Upvotes: 1

Related Questions