Tablelayoutpanel - Zur Laufzeit zeilen einfügen (nicht Anhängen)
-
Hallo, ich möchte zur Laufzeit Zeilen auf Buttonclick mitten in ein vorgefülltes Tablelayoutpanel einfügen. Ist dies überhauptmöglich oder muss ich mir das Tablelayoutpanel neu aufbauen?
-Panel 1 -Panel 2
nach Click soll folgender Aufbau dargestellt werden
-Panel 1 - Subelement 1 - Subelement 2 -Panel 2
Leider kommt bei mir folgendes raus,wenn ich die Elemente ans Ende anhängen möchte, dann klappt es wunderbar. Nur mittendrin nicht.
-Panel 1 - Subelement 1 -Panel 2 - Subelement 2
Hier der entsprechende Code für das einfügen aktuell:
//Code womit die Basis generiert wird tlPanel_ParamGroup.RowStyles.Clear(); for (int i = 0; i < liste.Count; i++) { Panel generated = GenerateLine(i + 1, liste[i]); tlPanel_ParamGroup.RowStyles.Insert(i, new RowStyle(SizeType.Percent)); tlPanel_ParamGroup.Controls.Add(generated, 0, i); } //Code für späteres einfügen tlPanel_ParamGroup.RowStyles.Insert(rowIndex, new RowStyle(SizeType.Percent)); tlPanel_ParamGroup.Controls.Add(control, 0, rowIndex); tlPanel_ParamGroup.RowCount += 1;
Der Index beim späteren einfügen ist auch geprüft es steht jeweils 1 & 2 drin. Daran kann es also nicht liegen. Ich hoffe es kann mir jemand weiter helfen.
Bis dahin wünsche ich einen Frohen Nikolaus:xmas1:
-
Hallo,
du fügst die (Sub-)Controls ja direkt dem TableLayoutPanel hinzu.
Lies dir einfach mittels der TableLayoutPanel.GetControlFromPosition-Methode das Panel aus und füge dann an dessen Controls-Collection das Subcontrol hinzu.
-
Danke für die Antwort, die Idee löst sicher das Problem, aber ist es denn technisch möglich in ein Tablelayout eine Zeile einzufügen?
Andernfalls wäre die Lösung wirklich Schritt für Schritt die Tablle neu aufzubauen in der Reihenfolge. Mich bewegt an dieser Stelle eher die Neugier
1-Panel 1 2- Subelement 1 3- Subelement 2 4-Panel 2
-
Sorry, dann hatte ich wohl deine Grafik falsch verstanden (ich dachte die Subelemente sollen innerhalb des Panels sein).
Probiere mal, zuerst den RowCount zu erhöhen und anschließend den Insert zu machen - bzw. überprüfe mal, ob sich der RowCount nicht automatisch durch das Insert erhöht.