Я некоторое время борется с этим, и обнаружил, что многие другие люди также борются с TableLayoutPanel (.net 2.0 Winforms).
Проблема
Я пытаюсь взять "пустой" tablelayoutpanel, который имеет 10 столбцов, а затем во время выполнения программно добавляет строки элементов управления (т.е. один элемент управления на ячейку).
Можно было подумать, что это должно быть так просто, как
myTableLayoutPanel.Controls.Add(myControl, 0 /* Column Index */, 0 /* Row index */);
Но это (для меня) не добавляет строки. Поэтому, возможно, добавление стиля строки
myTableLayoutPanel.RowStyles.Clear();
myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
Но это тоже не работает. Я выкопался и узнал, что использование myTableLayoutPanel.RowCount
изменяется от времени разработки до времени выполнения, поэтому выполнение myTableLayoutPanel.RowCount++;
фактически не добавляет еще одну строку, даже до/после добавления в нее строки RowStyle!
Еще одна связанная с этим проблема связана с тем, что элементы управления будут добавлены на дисплей, но все они просто будут отображаться в точке 0,0 таблицы TableLayoutPanel, кроме того, они даже не ограничены, чтобы быть в пределах ячеек, которые они которые должны отображаться внутри (то есть с Dock = DockStyle.Fill они все еще выглядят слишком большими/маленькими).
Есть ли у кого-нибудь рабочий пример добавления строк и элементов управления во время выполнения?