这似乎是一个老生常谈的问题,但我发现有关这些方法的 Microsoft 文档缺乏任何细节。
TablelLayoutPanel.GetCellPosition(Control control)
和 和有什么不一样TableLayoutPanel.GetPositionFromControl(Control control)
?
我正在使用 .NET Framework 4
这似乎是一个老生常谈的问题,但我发现有关这些方法的 Microsoft 文档缺乏任何细节。
TablelLayoutPanel.GetCellPosition(Control control)
和 和有什么不一样TableLayoutPanel.GetPositionFromControl(Control control)
?
我正在使用 .NET Framework 4
GetCellPosition
获取控件的声明位置,其中 asGetPositionFromControl
获取TableLayoutPanel
已为控件确定的实际位置。在大多数情况下,这些都是相同的。以编程方式将多个控件设置到同一个单元格(或使用 , 重叠的单元格ColumnSpan
)RowSpan
并查看结果有何不同。
将 TableLayoutPanel 添加到窗体并复制以下代码。运行它并单击标签以查看差异。
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Index As Integer = 0 To 4
Dim Control As New Label
Control.Text = String.Format("Control {0}", Index)
AddHandler Control.Click, AddressOf Control_Click
TableLayoutPanel1.Controls.Add(Control, 0, 0)
Next
End Sub
Private Sub Control_Click(sender As Object, e As EventArgs)
Dim Pos1 As TableLayoutPanelCellPosition = TableLayoutPanel1.GetPositionFromControl(sender)
Dim Pos2 As TableLayoutPanelCellPosition = TableLayoutPanel1.GetCellPosition(sender)
Dim Text As String = String.Format("GetPositionFromControl = {0},{1}" & vbCrLf & "GetCellPosition = {2},{3}", Pos1.Column, Pos1.Row, Pos2.Column, Pos2.Row)
MessageBox.Show(Text)
End Sub
End Class