9

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

1 に答える 1

13

forループの前に次のコード行を追加します。

 tblPanel.ColumnStyles.Clear();
于 2011-04-21T16:48:04.620 に答える