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

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