TableLayoutPanel во время выполнения добавляет столбцы, которые автоматически изменяют размер - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь создать сетку для кнопок авторазмера, используя TableLayoutPanel.Когда я добавляю столбцы во время выполнения со следующим кодом, они не имеют одинакового размера:

tableLayoutPanel.ColumnCount += 1;
for (var i = 0; i < tableLayoutPanel.RowCount; i++) {
    var button = new Button {
        Margin = Padding.Empty,
        Padding = Padding.Empty,
        Dock = DockStyle.Fill
    }
    tableLayoutPanel.Controls.Add(button);
}

Исходная форма с 1 столбцом:

1col

Добавление второго столбца:

2col

Добавление третьего столбца:

3col

Есть ли способ сделать авторазмер столбцов равномерным без вычисления размеров вручную?

1 Ответ

0 голосов
/ 25 апреля 2018

Необходимо явно сбросить стили столбца:

private void RecalculateColumnStyles()
{
    var cols = tableLayoutPanel.ColumnCount;
    var pct = (float) 100 / cols;
    tableLayoutPanel.SuspendLayout();
    tableLayoutPanel.ColumnStyles.Clear();
    for (var i = 0; i < cols; i++) {
        tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, pct));
    }
    tableLayoutPanel.ResumeLayout();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...