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?