With TableLayoutControlCollection.Add(Control, int, int), you can specify the cell position of control. You can assign control to a specific cell by providing both the column and row parameters, or you can specify only the column or row value and let the TableLayoutPanel.LayoutEngine place control at the next open cell. This is known as letting the control flow to its position in the System.Windows.Forms.TableLayoutPanel control.
Set column to -1 if you want control to occupy a fixed row position.
Set row to -1 if you want control to occupy a fixed column position.
If neither column nor row is -1, control will be added at the absolute position given by (column, row).
If you set both column and row to -1, control will flow to the first open position, with the specific flow behavior defined by the TableLayoutPanel.GrowStyle value. This is equivalent to using the System.Windows.Forms.Control.ControlCollection.Add(Control) method.
To get to the actual current position of a control, use the TableLayoutPanel.GetPositionFromControl(Control) method. This method takes into account the entire System.Windows.Forms.TableLayoutPanel control state, including column or row spanning and when the TableLayoutPanel.LayoutEngine has placed a control with its Column and Row properties set to -1.