Проблема в том, как работает автопрокрутка.При прокрутке вниз режим автопрокрутки фактически проходит по всем элементам управления и перемещает их вверх, настраивая их свойства Top
.Это, безусловно, затрудняет добавление еще одного ряда.Два простых варианта:
Опция 1 : добавьте каждый ряд элементов управления на свою панель (или, лучше, создайте UserControl
, содержащий их).Затем добавьте каждую из этих панелей к FlowLayoutPanel
или GridLayoutPanel
, который будет выполнять вычисление координат для вас.
-OR-
Опция 2 :Вместо использования (i * 22) + 50
, используйте:
if (i == 0)
proj[i].Location = new Point(10, 50);
else
proj[i].Location = new Point(10, proj[i-1].Top + 22);
Аналогично для всех других ваших элементов управления.
Первый вариант лучше использовать, но второй может быть более быстрым прямым решением.Вам также следует рассмотреть возможность использования элемента управления сеткой, особенно если число строк может быть большим.