2009-09-28 4 views
3

У меня есть программно созданная TableLayoutPanel. Он работает нормально, но я не мог найти что-то: как я могу сделать его столбцами размера автоматически при изменении размера формы? Панель настроена на Dock.Top, и когда я изменяю размер формы, а не размер каждого столбца в процентах, увеличивается только последний столбец. Что я могу сделать для этого? Вот как я добавляю ColumnStyle для каждого столбца:Автоматическое изменение размера TableLayoutPanel

this.tablePanelFilter.ColumnStyles.Add(
    new ColumnStyle(SizeType.Percent,Convert.ToSingle(
    Math.Ceiling((decimal)100/(decimal)columnCount)))); 

ответ

1

Добавление этого кода form.Resize случае решить проблему:

this.tablePanelFilter.ColumnStyles.Clear(); 

      for (int i = 0; i < this.tablePanelFilter.ColumnCount; i++) 
      { 
       ColumnStyle c = new ColumnStyle(); 
       c.SizeType = SizeType.Percent; 
       c.Width = Convert.ToSingle(Math.Ceiling((decimal)100/(decimal)this.tablePanelFilter.ColumnCount)); 
       this.tablePanelFilter.ColumnStyles.Add(c); 
      } 
1

Вы сначала очищаете ColumnStyles? Используйте отладчик и/или некоторый код, чтобы убедиться, что у вас столько столбцов, сколько у вас есть столбцы.