2011-04-21 93 views
9

我有一個tableLayoutPanel 5或7列。用戶可以點擊「顯示/隱藏週末」按鈕從5天切換到7天。TableLayoutPanel列寬度在運行時:奇怪的行爲或錯誤

問題:當你從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(); 
    } 
+2

添加tblPanel.ColumnStyles.Clear(); – 2011-04-21 12:57:59

+0

Doh!謝謝! :-) – 2011-04-21 13:07:50

回答

12

之前添加這行代碼for循環:

tblPanel.ColumnStyles.Clear();