检索添加到TableLayoutPanel的控件的行

时间:2018-03-07 12:36:26

标签: vb.net winforms tablelayoutpanel

我有一项操作可以将控件添加到TableLayoutPanel,我想将每个新行SizeType设置为AutoSize

下面的代码不起作用,因为它没有检索实际的行号,.GetRow(e.Control)的结果变为-1。我应该处理哪个事件才能获得正确的索引?

Private Sub TableLayoutPanel1_ControlAdded(sender As Object, e As ControlEventArgs) Handles TableLayoutPanel1.ControlAdded
    Dim i = TableLayoutPanel1.GetRow(e.Control) 'i = -1 ... why?
    TableLayoutPanel1.RowStyles(i).SizeType = SizeType.AutoSize
End Sub

1 个答案:

答案 0 :(得分:2)

你必须仔细阅读/直接阅读文档。

来自TableLayoutPanel.GetRow Method

  

控件的行位置,如果控件的位置由LayoutEngine确定,则返回-1。

该语句的 LayoutEngine 部分是关键。您需要一种方法来返回由它确定的位置。幸运的是,你有TableLayoutPanel.GetPositionFromControl Method

  

GetPositionFromControl方法返回控件的实际当前位置,即使其位置由LayoutEngine确定。

您可以继续使用ControlAdded事件。

Dim i As Int32 = TableLayoutPanel1.GetPositionFromControl(e.Control).Row