将行添加到TableLayoutPanel的顶部

时间:2015-02-11 15:21:25

标签: c# row tablelayoutpanel

我试图在我的tablelayoutpanel顶部添加新行。为此,我使用以下代码:

初始化

TableLayoutPanel panel = new TableLayoutPanel();
panel.ColumnCount = 1;
panel.RowCount = 1;
panel.AutoScroll = true;
panel.Location = new System.Drawing.Point(280, 52);
panel.Size = new System.Drawing.Size(308, 189);
panel.Visible = true;
panel.BackColor = Color.DarkGray;
Controls.Add(panel);

对于每个新行

panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 16F));
panel.Controls.Add(new Label() { Text = text, AutoSize = false, ForeColor = Color.White, Font = font }, 0, 0);
panel.RowCount = panel.RowCount + 1;

问题 它似乎工作正常,直到我添加4行。例如:

ITERATION 1 - > 球员1

ITERATION 2 - > 玩家2 球员1

ITERATION 3 - > 球员3 玩家2 球员1

ITERATION 4 - > 球员4 球员3 玩家2 球员1

问题出在

ITERATION 5 - > 球员4 球员5 球员3 玩家2 球员1

你对可能发生的事情有任何想法吗?

1 个答案:

答案 0 :(得分:5)

添加行后,您需要将所有控件按下一行,然后插入新控件:

panel.RowStyles.Add(new RowStyle(SizeType.Absolute, 16F));
panel.RowCount++;
foreach (Control c in panel.Controls) {
  panel.SetRow(c, panel.GetRow(c) + 1);
}
panel.Controls.Add(new Label() { Text = text }, 0, 0);