Tro*_*hel 6 c# vb.net visual-studio-2010
我需要在TableLayoutPanel中交换控件.它们分开排列.我尝试了建议的代码但无济于事.除了删除所有控件并重新添加之外,还有其他解决方案吗?答案可以是C#或VB.
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim c1 As Control = Me.tlp.GetControlFromPosition(0, 0)
Dim c2 As Control = Me.tlp.GetControlFromPosition(0, 1)
If c1 IsNot Nothing And c2 IsNot Nothing Then
Me.tlp.SetRow(c2, 0)
Me.tlp.SetRow(c1, 1)
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
以下是交换控件的代码TableLayoutPanel- 您有两个选项.
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
Run Code Online (Sandbox Code Playgroud)
它不依赖于控件所在的位置TableLayoutPanel- 可以是不同的行,列或两者.
样品用法:
SwapControls(TableLayoutPanel1, Button1, Button2)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
样品用法:
SwapControls(TableLayoutPanel1, New TableLayoutPanelCellPosition(0, 0), New TableLayoutPanelCellPosition(1, 0))
Run Code Online (Sandbox Code Playgroud)
解决方案基于MSL上的TableLayoutPanel.SetRow帮助文章以及对其反编译表示的一些研究.两者都经过测试并被认为有效.
| 归档时间: |
|
| 查看次数: |
2605 次 |
| 最近记录: |