70-526 MCTSTableLayoutPanel controlThe TableLayoutPanel control is a container control where child controls are added within a table structure. Each cell in the table contains a single control, unless a container such as a Panel is added first. Assuming default values of zero for both ColumnCount and RowCount, this control mimics a FlowLayoutPanel instance with FlowDirection set to Horizontal and WrapContents set to True. Inheritance hierarchy System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.Panel
System.Windows.Forms.TableLayoutPanel
Useful properties
Note TableLayoutPanel TasksClicking on the Smart Tag icon ![]() The menus items are pretty much self explanatory. The last menu item launches the Column and Row Styles Editor. Column and Row Styles EditorThe behaviour of each Row and Column can be independantly defined through the RowStyles and ColumnStyles properties. These properties are not exposed through the properties pane of the IDE, but instead can be accessed through the virtual properties named Rows and Columns, and the Column and Row Styles Editor. This editor can be launched in one of three ways:
![]() This dialog alows you to edit the SizeType property of each of the Columns and Rows in the TableLayoutPanel. The SizeType property determines how the Height (RowStyle) or Width (ColumnStyle) should be interpreted. A value from the SizeType enumeration is required, the default value is Percent:
Adding a TableLayoutPanel manuallyAdding a TableLayoutPanel at run time is a simple process: // Create TableLayoutPanel TableLayoutPanel tlp = new TableLayoutPanel(); // Set the BorderStyle to Inset tlp.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset; // Grid has two columns tlp.ColumnCount = 2; // Grid has two rows tlp.RowCount = 2; // If grid is full add extra cells by adding column tlp.GrowStyle = TableLayoutPanelGrowStyle.AddColumns; // Padding (pixels)within each cell (left, top, right, bottom) tlp.Padding = new Padding(1, 1, 4, 5); // Add TableLayoutPanel to the Forms controls this.Controls.Add(tlp); Adding controls to a TableLayoutPanel manuallyAdding a control to a TableLayoutPanel at run time can be done in a couple of ways. Simply using the Add method with just the name of the control adds the control to the first available cell. // Create buttons Button button1 = new Button(); button1.Text = "Click Me"; // Add buttons to TableLayoutPanel tlp.Controls.Add(button1); ![]() Adding a second control ![]() Adding a third control changes the order again. ![]() And a fourth control ![]() When a fifth control is added, the behaviour is determined by the GrowStyle property. In this case a column is added to accomodate the new control. ![]() To correct the layout of the panel set the AutoSize property to true. // Resize the TableLayoutPanel tlp.AutoSize = true; ![]() Alternatively, you can place controls in exactly the cell you want them by specifying the Row and Column. For instance to add a control to the second column and the first row. // Add buttons to TableLayoutPanel tlp.Controls.Add(button1, 1, 0); The format for this version of the method is public virtual void Add( Control control, int column, int row ) Editing Column and Row Styles manuallyTo change the Style of a Column or Row at run time, simply set the style: tableLayoutPanel1.ColumnStyles[0].SizeType = SizeType.Absolute; tableLayoutPanel1.ColumnStyles[0].Width = 20; tableLayoutPanel1.RowStyles[0].SizeType = SizeType.Percent; tableLayoutPanel1.RowStyles[0].Height = 50; Merging CellsCells can be merged in the TableLayoutPanel control by setting the ColumnSpan or RowSpan properties on a child control. To span two columns, either set the ColumnSpan property of the control to 2, or at run time use the SetColumnSpan method. tlp.SetColumnSpan(button1, 2); To span two rows, either set the RowSpan property of the control to 2, or at run time use the SetRowSpan method. tlp.SetRowSpan(button1, 2); MSDN references
|