TableLayoutPanel не меняет индекс последней строки после удаления строки - PullRequest
0 голосов
/ 06 ноября 2018

Я добавил 4 элемента управления, так как myControli -i - индекс строки - в TableLayoutPanel. Затем я удалил 3-й ряд программно. Но когда я вызываю 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 голосов
/ 07 ноября 2018

Похоже, что вы не можете удалить строку "в середине". 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));
    }

И вы можете написать простой метод для этого ...

...