Я боролся с этим какое-то время и обнаружил, что ряд других людей также борются с 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 они все еще кажутся слишком большими / маленькими).
Есть ли у кого-нибудь рабочий пример добавления строк и элементов управления во время выполнения?