Reputation:
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
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