TableLayoutPanel 在删除一行后不会更改最后一行索引
TableLayoutPanel doesn't change the last row index after deleting a row
我添加了 4 个控件,因为 myControli
-i 是 TableLayoutPanel
中的行索引。然后我以编程方式删除了第三行。但是当我调用 TableLayoutPanel.GetRow(myControl3)
时,它 returns 3 作为行号而不是 2。为什么它在删除行后不重新排列行索引?
private void deleteButton3_Click(object sender, EventArgs e)
{
tableLayoutPanel1.Controls.Remove(button3);
tableLayoutPanel1.RowCount -= 1;
Debug.WriteLine(tableLayoutPanel1.GetRow(button4));
//Returns 3
}
更新: 我更新了代码示例以使其更加清晰并上传了一张图片。
table 布局有 4 AutoSize
行,1 列。这些按钮是在设计时添加的。
您似乎无法删除一行 "in the middle"。 RowCount
删除最后一行。你需要做的是:
-去掉控件
-将要删除的行之后的所有控件上移
-删除行
你的情况:
private void deleteButton3_Click(object sender, EventArgs e)
{
tableLayoutPanel1.Controls.Remove(button3);
tableLayoutPanel1.SetRow(button4, 2);
tableLayoutPanel1.RowCount -= 1;
Debug.WriteLine(tableLayoutPanel1.GetRow(button4));
}
你可以写一个简单的方法来做到这一点...
我添加了 4 个控件,因为 myControli
-i 是 TableLayoutPanel
中的行索引。然后我以编程方式删除了第三行。但是当我调用 TableLayoutPanel.GetRow(myControl3)
时,它 returns 3 作为行号而不是 2。为什么它在删除行后不重新排列行索引?
private void deleteButton3_Click(object sender, EventArgs e)
{
tableLayoutPanel1.Controls.Remove(button3);
tableLayoutPanel1.RowCount -= 1;
Debug.WriteLine(tableLayoutPanel1.GetRow(button4));
//Returns 3
}
更新: 我更新了代码示例以使其更加清晰并上传了一张图片。
table 布局有 4 AutoSize
行,1 列。这些按钮是在设计时添加的。
您似乎无法删除一行 "in the middle"。 RowCount
删除最后一行。你需要做的是:
-去掉控件
-将要删除的行之后的所有控件上移
-删除行
你的情况:
private void deleteButton3_Click(object sender, EventArgs e)
{
tableLayoutPanel1.Controls.Remove(button3);
tableLayoutPanel1.SetRow(button4, 2);
tableLayoutPanel1.RowCount -= 1;
Debug.WriteLine(tableLayoutPanel1.GetRow(button4));
}
你可以写一个简单的方法来做到这一点...