我添加了4个控件,因为myControli
-我是行索引-到TableLayoutPanel
中。然后我以编程方式删除了第三行。但是,当我调用TableLayoutPanel.GetRow(myControl3)
时,它返回的行号是3而不是2。为什么删除行后它不重新排列行索引?
private void deleteButton3_Click(object sender, EventArgs e)
{
tableLayoutPanel1.Controls.Remove(button3);
tableLayoutPanel1.RowCount -= 1;
Debug.WriteLine(tableLayoutPanel1.GetRow(button4));
//Returns 3
}
更新:我已经更新了代码示例,使其更加清晰并上传了图片。
该表布局具有4 AutoSize
行,1列。这些按钮是在设计时添加的。
答案 0 :(得分:2)
您似乎无法在“中间”删除一行。 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));
}
您可以编写一个简单的方法来做到这一点...