2011-04-21 59 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();