Eu tenho lutado com isso por um tempo e descobri que várias outras pessoas também lutam com o TableLayoutPanel (.net 2.0 Winforms).
Problema
Estou tentando pegar um tablelayoutpanel 'em branco', que tem 10 colunas definidas e, em tempo de execução, adicionar linhas de controles de forma programática (ou seja, um controle por célula).
Alguém pode ter pensado que deveria ser tão simples quanto
myTableLayoutPanel.Controls.Add(myControl, 0 /* Column Index */, 0 /* Row index */);
Mas isso (para mim) não adiciona as linhas. Então, talvez adicionando em uma linha estilo
myTableLayoutPanel.RowStyles.Clear();
myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
Mas isso também não funciona. Eu pesquisei e descobri que o myTableLayoutPanel.RowCount
uso muda do tempo de design para o tempo de execução, portanto myTableLayoutPanel.RowCount++;
, não adiciona outra linha, nem mesmo antes / depois de adicionar uma entrada RowStyle para ela!
Outro problema relacionado que estou encontrando é que os controles serão adicionados à exibição, mas todos eles simplesmente são renderizados no ponto 0,0 do TableLayoutPanel, além disso, eles não são nem mesmo restritos a estar dentro dos limites da célula que deveriam estar exibidos dentro (ou seja, com Dock = DockStyle.Fill eles ainda aparecem muito grandes / pequenos).
Alguém tem um exemplo prático de adição de linhas e controles em tempo de execução?