【问题标题】:TableLayoutPanel GetCellPosition and GetPositionFromControl, how do they differ?TableLayoutPanel GetCellPosition 和 GetPositionFromControl,它们有何不同?
【发布时间】:2011-08-22 09:34:30
【问题描述】:

这似乎是一个老生常谈的问题,但我发现有关这些方法的 Microsoft 文档缺乏任何细节。

TablelLayoutPanel.GetCellPosition(Control control)TableLayoutPanel.GetPositionFromControl(Control control) 有什么区别?

我正在使用 .NET Framework 4

【问题讨论】:

    标签: c# .net vb.net winforms tablelayoutpanel


    【解决方案1】:

    GetCellPosition 获取控件的声明位置,而GetPositionFromControl 获取实际位置,TableLayoutPanel 已为控件确定。在大多数情况下,这些都是相同的。以编程方式将多个控件设置到同一个单元格(或与ColumnSpanRowSpan 重叠的单元格)并查看结果有何不同。

    将 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
    

    【讨论】:

    • 谢谢,我使用的是GetCellPosition,Microsoft 文档中缺少它。至少GetPositionFromControl 文档确实对它进行了一些解释。感谢您完善了对我的意义。 LayoutEngine 文档,链接自 GetPositionFromControl 文档也很少告诉我。
    • GetPositionFromControl 文档中未提及的一个警告是,如果您传递了 Control 参数,它会为返回的 TableLayoutPanelCellPositionRowColumn 属性返回 -1 to GetPositionFromControlVisible 属性设置为False。因此,如果您想要不可见控件的位置,则需要使用GetCellPosition(请记住此答案中提到的GetCellPosition 的注意事项)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2011-02-20
    • 1970-01-01
    • 2018-10-24
    • 2020-06-20
    • 2010-12-21
    相关资源
    最近更新 更多