Добавление строк в начало 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 строки. Например:

ИТЕРАЦИЯ 1 -> Игрок 1

ИТЕРАЦИЯ 2 -> Игрок 2 Игрок 1

ИТЕРАЦИЯ 3 -> Игрок 3 Игрок 2 Игрок 1

ИТЕРАЦИЯ 4 -> Игрок 4 Игрок 3 Игрок 2 Игрок 1

Здесь возникает проблема

ИТЕРАЦИЯ 5 -> Игрок 4 Игрок 5 Игрок 3 Игрок 2 Игрок 1

У вас есть идеи о том, что может происходить?

1 ответ

Решение

После добавления строки вам нужно переместить все элементы управления вниз по строке, а затем вставить новый элемент управления:

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);
Другие вопросы по тегам