3
votes

I have a programmatically created TableLayoutPanel. It works fine but I couldn't find something: how can I make it size columns automatically when the form is resized? The panel is set to Dock.Top and when I resize the form instead of sizing every column as percents, only last column grows. What can I do for this? Here's how I add ColumnStyle for each column:

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

3 Answers

1
votes

Do you clear the ColumnStyles first? Use a debugger and/or some code to verify that you have as many ColumnStyles as you have columns.

1
votes

Adding this code to form.Resize event solved the problem:

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