Winforms TableLayoutPanel, das programmgesteuert Zeilen hinzufügt

Ich habe eine Weile damit gekämpft und festgestellt, dass einige andere Leute auch mit dem TableLayoutPanel (.net 2.0 Winforms) zu kämpfen haben.

Problem

Ich versuche, ein 'leeres' Tablelayoutpanel zu erstellen, in dem 10 Spalten definiert sind, und dann zur Laufzeit programmgesteuert Steuerelementzeilen hinzuzufügen (d. H. Ein Steuerelement pro Zelle).

Man hätte denken können, dass es so einfach sein sollte wie

myTableLayoutPanel.Controls.Add(myControl, 0 /* Column Index */, 0 /* Row index */);

Aber das fügt (für mich) die Zeilen nicht hinzu. Also vielleicht in einem Zeilenstil hinzufügen

myTableLayoutPanel.RowStyles.Clear();
myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));

Aber das geht auch nicht. Ich habe mich umgegraben und herausgefunden, dass diemyTableLayoutPanel.RowCount Die Verwendung ändert sich von Entwurfszeit zu LaufzeitmyTableLayoutPanel.RowCount++; fügt keine weitere Zeile hinzu, auch nicht vor / nach dem Hinzufügen eines RowStyle-Eintrags dafür!

Ein weiteres verwandtes Problem ist, dass die Steuerelemente zur Anzeige hinzugefügt werden, aber sie werden alle einfach an Punkt 0,0 des TableLayoutPanel gerendert. Außerdem müssen sie nicht einmal innerhalb der Zellengrenzen liegen, die sie haben sollen angezeigt (dh mit Dock = DockStyle.Fill erscheinen sie immer noch viel zu groß / klein).

Hat jemand ein funktionierendes Beispiel für das Hinzufügen von Zeilen und Steuerelementen zur Laufzeit?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage