Добавление строк в начало 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);