TableLayoutPanel运行时的列宽:奇怪的行为或错误

时间:2011-04-21 12:42:30

标签: c# .net winforms tablelayoutpanel

我有一个带有5或7列的tableLayoutPanel。用户可以点击“显示/隐藏周末”按钮,从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 个答案:

答案 0 :(得分:13)

在for循环之前添加以下代码:

 tblPanel.ColumnStyles.Clear();