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 mit 10 definierten Spalten zu erstellen und dann zur Laufzeit programmgesteuert Steuerelementzeilen hinzuzufügen (dh 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ür mich) fügt die Zeilen nicht hinzu. Also vielleicht in einer Reihe hinzufügen
myTableLayoutPanel.RowStyles.Clear();
myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
Das funktioniert aber auch nicht. Ich habe mich umgesehen und herausgefunden, dass sich die myTableLayoutPanel.RowCount
Verwendung von Entwurfszeit zu Laufzeit ändert, daher myTableLayoutPanel.RowCount++;
wird keine weitere Zeile hinzugefügt, auch nicht vor / nach dem Hinzufügen eines RowStyle-Eintrags dafür!
Ein weiteres verwandtes Problem, auf das ich stoße, ist, dass die Steuerelemente zur Anzeige hinzugefügt werden, aber alle einfach am Punkt 0,0 des TableLayoutPanel gerendert werden. Außerdem müssen sie nicht einmal innerhalb der Zellengrenzen liegen, die sie sein sollen angezeigt innerhalb (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?