Adding controls to TableLayoutPanel dynamically during runtime

90,386

Use something like this:

Table.Controls.Add(new Label { Text = "Type:", Anchor = AnchorStyles.Left, AutoSize = true }, 0, 0);
Table.Controls.Add(new ComboBox { Dock = DockStyle.Fill }, 0, 1);

You don't need to define number of rows and columns, they will be added automatically.

Share:
90,386
Marek Buchtela
Author by

Marek Buchtela

Updated on November 18, 2020

Comments

  • Marek Buchtela
    Marek Buchtela over 3 years

    I have a TableLayoutPanel starting with two columns and 0 rows. What I need to do is, dynamically adding a row and filling both of the columns with different controls (it will be panels). In Form1 I am creating the TableLayout this way:

    TableLayoutPanel Table = new TableLayoutPanel();
    Table.Location = new Point(10, 40);
    Table.Size = new Size(620,100);
    Table.AutoSize = true;
    Table.Name = "Desk";
    Table.ColumnCount = 2;
    Table.RowCount = 0;
    Table.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
    Table.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddRows;
    this.Controls.Add(Table);
    

    afterwards during runtime I am getting how many rows will I need, and if they will be filled with either a Panel or some Label. It might happen that in the same row left will be Panel, right Label etc..