public virtual void RemoveAll() { List<Widget> tmp = new List<Widget>(); foreach (Widget w in widgets) tmp.Add(w); foreach (Widget w in tmp) Remove(w); }