删除一行后,TableLayoutPanel不会更改最后一行的索引

时间:2018-11-06 20:28:23

标签: c# tablelayoutpanel

我添加了4个控件,因为myControli-我是行索引-到TableLayoutPanel中。然后我以编程方式删除了第三行。但是,当我调用TableLayoutPanel.GetRow(myControl3)时,它返回的行号是3而不是2。为什么删除行后它不重新排列行索引?

enter image description here

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列。这些按钮是在设计时添加的。

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));
    }

您可以编写一个简单的方法来做到这一点...