У меня есть TableLayoutPanel и динамическое добавление строк. Как я могу вставить строки с элементами управления по определенному индексу?
private void AddRowstoTableLayout()
{
for (int cnt = 0; cnt < 5; cnt++)
{
RowStyle newRowStyle = new RowStyle();
newRowStyle.Height = 50;
newRowStyle.SizeType = SizeType.Absolute;
Label lbl1 = new Label();
lbl1.Text = "label-" + (cnt + 1);
TextBox t1 = new TextBox();
t1.Text = "text-" + (cnt + 1);
Label lblMove = new Label();
lblMove.Text = "Move-" + (cnt + 1);
lblMove.MouseDown += new MouseEventHandler(dy_MouseDown);
tableLayoutPanel1.RowStyles.Insert(0, newRowStyle);
this.tableLayoutPanel1.Controls.Add(lbl1, 0, cnt); //correct
this.tableLayoutPanel1.Controls.Add(t1, 1, cnt); //correct
this.tableLayoutPanel1.Controls.Add(lblMove, 2, cnt); //correct
tableLayoutPanel1.RowCount += 1;
}
}
Я пытался
tableLayoutPanel1.RowStyles.Insert(0, newRowStyle);
но не повезло
Не используйте TableLayoutPanel там, где более уместен DataGridView.
Выше всего лишь образец кода. Мое требование слишком сложное, и с ним невозможно справиться с помощью DataGridView. Поэтому я вынужден использовать TableLayoutPanel





Из коробки такой функции нет. Способ - добавить строку в TableLayoutPanel. Затем переместите все элементы управления, которые расположены в строках больше, чем ваш желаемый индекс строки, в rowindex выше, чем их текущая позиция. Вот как это можно сделать:
void InsertTableLayoutPanelRow(int index)
{
RowStyle newRowStyle = new RowStyle();
newRowStyle.Height = 50;
newRowStyle.SizeType = SizeType.Absolute;
tableLayoutPanel1.RowStyles.Insert(index, newRowStyle);
tableLayoutPanel1.RowCount++;
foreach (Control control in tableLayoutPanel1.Controls)
{
if (tableLayoutPanel1.GetRow(control) >= index)
{
tableLayoutPanel1.SetRow(control, tableLayoutPanel1.GetRow(control) + 1);
}
}
}
Я не могу удалить строку в данной позиции. Как я могу это удалить
@sangamesh Ваш вопрос заключался в том, как вставить строку в определенный индекс. Почему вы хотите удалить строку? Или это другой вопрос?
да. Это другой вопрос
@sangamesh Затем вы либо измените контекст и заголовок своего вопроса, либо отметьте этот вопрос как отвеченный и откройте новый. Это поможет другим людям, если они обратятся к вашему вопросу в будущем.