В классе Control.ControlCollection есть ошибка.В нем отсутствует код для создания исключения InvalidOperationException, которое генерируют другие классы коллекции при изменении коллекции в цикле foreach.
В результате выполнения вызова Dispose () элемент управления удаляется из коллекции Controls.По сути, вы распоряжаетесь только каждым другим элементом управления.
Лучший способ расположить элементы управления, который приводит точку в исходное положение, это:
while (controls.Count > 0) controls[0].Dispose();
, хотя трудно не использоватьцикл for (), который работает в обратном направлении.Этот код почти всегда не нужен, Winforms автоматически удаляет элементы управления.И ничего не нужно утилизировать метод CreateControl () элемента управления еще не был вызван.Что не происходит, пока в форме контейнера не будет вызван и завершен метод Show ().Утилизируйте элементы управления самостоятельно только при вызове метода Controls.Remove () или Controls.Clear ().