Ширина столбца TableLayoutPanel во время выполнения: странное поведение или ошибка - PullRequest
9 голосов
/ 21 апреля 2011

У меня есть tableLayoutPanel с 5 или 7 столбцами.Пользователи могут нажать кнопку «показать / скрыть выходные», чтобы переключиться с 5 на 7 дней.

Проблема: если вы начинаете с 5 дней, а затем нажимаете кнопку 5/7, 7 столбцов НЕ разнесены равномерно... столбец 6 намного меньше остальных.Странно то, что если начать с 7 дней, все выглядит хорошо.Когда вы переключаетесь на 5, а затем обратно на 7, все еще все в порядке ??

    void lblSatSunday_Click(object sender, EventArgs e)
    {
        ShowZaterdagZondag = !ShowZaterdagZondag;
        AddDisplayControls();
    }

    private void AddDisplayControls()
    {
        tblPanel.SuspendLayout();
        tblPanel.Controls.Clear();
        tblPanel.ColumnCount = ShowZaterdagZondag ? 7 : 5; // <<<-------
        tblPanel.RowCount = 1;
        tblPanel.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;//.AddColumns;
        for (int i = 0; i < tblPanel.ColumnCount; i++)
        {
            ColumnStyle cs = new ColumnStyle(SizeType.Percent, 100 / tblPanel.ColumnCount);
            tblPanel.ColumnStyles.Add(cs);

            //Add accordeon
            Accordeon a = new Accordeon();
            //Removed code for reading
            tblPanel.Controls.Add(a);
        }
        tblPanel.ResumeLayout();
    }

1 Ответ

13 голосов
/ 21 апреля 2011

Добавьте эту строку кода перед циклом for:

 tblPanel.ColumnStyles.Clear();
...