Если переместить панели из TableLayoutPanel в дизайн времени (т.е. переместить их на поверхность формы где-то), а затем добавить их к элементу управления TLP в выполнения, вы можете добавлять и удалять элементы управления по желанию ,
Это зависит от каждого квадрата занимаемой площади, потому что, когда вы звоните Controls.Add
, он подключается к следующим Доступное пространство.
Так добавить все панели во время выполнения:
TableLayoutPanel1.Controls.Add(Panel1)
TableLayoutPanel1.Controls.Add(Panel2)
TableLayoutPanel1.Controls.Add(Panel3)
TableLayoutPanel1.Controls.Add(Panel4)
вы можете использовать этот метод, чтобы поменять местами элементы управления:
Private Sub SwapControls(aTableLayoutControl As TableLayoutPanel, firstControl As Control, secondControl As Control)
aTableLayoutControl.Controls.Remove(firstControl)
aTableLayoutControl.Controls.Remove(secondControl)
aTableLayoutControl.Controls.Add(secondControl)
aTableLayoutControl.Controls.Add(firstControl)
End Sub
Так, называя это должно дать вам то, что вы хотите:
SwapControls(TableLayoutPanel1, Panel1, Panel3)
Panel1.Visible = False
Попробуйте использовать код, пожалуйста. Вы можете сказать, что это неверно, потому что вы не говорите точно, в какой строке и столбце должен появиться элемент управления. –
Это рабочий код @HansPassant - я изменил первый абзац, поэтому теперь он должен быть более четким. –
hi @ matt-wilko, он работает, но почему я держу элементы управления в стороне от TableLayoutPanel. Я хочу сохранить элементы управления в TableLayoutPanel при просмотре дизайна. Теперь во время выполнения я хочу перемещать элементы управления в любом месте в TableLayoutPanel. –