TableLayoutPanel GetCellPosition и GetPositionFromControl, чем они отличаются? - PullRequest
2 голосов
/ 22 августа 2011

Это может показаться банальным вопросом, но мне не хватает документации Microsoft по этим методам.

В чем разница между TablelLayoutPanel.GetCellPosition(Control control) и TableLayoutPanel.GetPositionFromControl(Control control)?

Я использую .NET Framework 4

1 Ответ

3 голосов
/ 22 августа 2011

GetCellPosition получает объявленную позицию элемента управления, где GetPositionFromControl возвращает фактическую позицию, которую 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
...