コントロールを交換するコードは次のとおりTableLayoutPanel
です。2つのオプションがあります。
1)コントロールを参照して交換します。
Private Sub SwapControls(tlp As TableLayoutPanel, ctl1 As Control, ctl2 As Control)
Dim ctl1pos As TableLayoutPanelCellPosition = tlp.GetPositionFromControl(ctl1)
tlp.SetCellPosition(ctl1, tlp.GetPositionFromControl(ctl2))
tlp.SetCellPosition(ctl2, ctl1pos)
End Sub
コントロールがどこにあるかには依存しませんTableLayoutPanel
-異なる行、列、またはその両方である可能性があります。
使用例:
SwapControls(TableLayoutPanel1, Button1, Button2)
2)列/行インデックスによるスワップ:
Private Sub SwapControls(tlp As TableLayoutPanel, pos1 As TableLayoutPanelCellPosition, pos2 As TableLayoutPanelCellPosition)
Dim ctl1 As Control = tlp.GetControlFromPosition(pos1.Column, pos1.Row)
Dim ctl2 As Control = tlp.GetControlFromPosition(pos2.Column, pos2.Row)
SwapControls(tlp, ctl1, ctl2)
End Sub
使用例:
SwapControls(TableLayoutPanel1, New TableLayoutPanelCellPosition(0, 0), New TableLayoutPanelCellPosition(1, 0))
ソリューションは、MSDNのTableLayoutPanel.SetRowヘルプ記事とその逆コンパイルされた表現に関するいくつかの調査に基づいています。両方ともテストされ、機能していると見なされました。