2017-12-13 7 views
0

Ich versuche, eine Zeile in der Mitte des Tabellenlayoutpanels hinzuzufügen. Ich habe jedoch Mühe, einen Weg zu finden, dies zu tun. Ich habe versucht, aus einem Artikel im Internet zu folgen, aber das scheint nicht zu funktionieren. Kannst du helfen.Zeile in Mitte der Tabelle einfügen Layout-Panel C# Windows

Ich habe 3 Spalten und 5 Zeilen im Tabellenlayout Panel. Jede Zeile enthält Label, Textbox und Leerzeichen.

Ich versuche eine Zeile nach der zweiten Zeile in bereits erstellten Tabellenlayout hinzuzufügen.

var AddOnControl = ConfirmationTable.Controls.Find("Discount", true).First(); 
int childIndex = 1+ ConfirmationTable.Controls.GetChildIndex(AddOnControl); 


Label lbl = new Label(); 
lbl.Name = key; 
lbl.Text = key; 
lbl.Font = new Font("Calibri", 10F, System.Drawing.FontStyle.Regular); 
lbl.Size = new Size(lbl.Size.Width + 70, lbl.Size.Height); 

ConfirmationTable.Controls.Add(lbl); 

TextBox txt = new TextBox(); 
txt.Multiline = true; 
txt.TextChanged += txt_TextChanged; 
txt.Name = "txtPrice" + key; 
txt.Text = value; 
txt.BorderStyle = BorderStyle.None; 

ConfirmationTable.Controls.Add(txt); 

lbl = new Label(); 
lbl.Name = "blank"; 
ConfirmationTable.Controls.Add(lbl); 

ConfirmationTable.Controls.SetChildIndex(lbl, childIndex); 
ConfirmationTable.Controls.SetChildIndex(txt, childIndex + 1); 
ConfirmationTable.Controls.SetChildIndex(txt, childIndex + 2); 

aber der obige Code fügt immer eine Zeile am Ende der Tabelle hinzu. Irgendein Vorschlag?

Antwort

0

Es gibt eine Überladung der Methode Controls.Add, die zwei Ganzzahlen als Indizes für die Spalten-/Zeilenposition akzeptiert.

So:

tableLayoutPanel1.Controls.Add(lb3, 0, 1); 

Ich glaube, das ist genug, Ihr Problem auf einfache Art und Weise zu lösen.

Verwandte Themen