-->

Determine the Cell of a Table Layout Panel Control

2019-08-28 01:02发布

问题:

I am working on a project in VB.Net, and am using a Table Layout Panel to allow for multiple windows to be open side by side with one another.

The issue I am dealing with right now is figuring out exactly which Column of the Table Layout Panel components are placed in at run time.

For example, let's say I have two Windows open, with 3 Columns. So there are controls in Columns 1 & 2, and Column 3 is empty. If I close the Window in Column 1, I want to detect the Column it was in, so that I can shift the Window in Column 2 over to Column 1. I'm trying to do this so I can resize the windows based on how many windows are being opened side by side.

However I can't seem to find a way to determine exactly while Column is the 'parent' Column. The parent container is the Table Layout Panel itself, but I don't know how to get the information I am looking for.

回答1:

You can determine the position of a child control inside a TableLayoutPanel using its GetPositionFromControl() method, which will return a TableLayoutPanelCellPosition structure, identifying the Column and Row of the cell that a control is occupying:

Dim Position As TableLayoutPanelCellPosition = 
                TableLayoutPanel1.GetPositionFromControl([ControlName]) 

Position reports Position.Column and Position.Row as Integer values.

You can also detemine which child control is occupying a specified position, using the GetControlFromPosition() method:

Dim MyControl As Control = TableLayoutPanel1.GetControlFromPosition(0, 0)