我有一项操作可以将控件添加到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
答案 0 :(得分:2)
你必须仔细阅读/直接阅读文档。
来自TableLayoutPanel.GetRow Method
控件的行位置,如果控件的位置由LayoutEngine确定,则返回-1。
该语句的 LayoutEngine 部分是关键。您需要一种方法来返回由它确定的位置。幸运的是,你有TableLayoutPanel.GetPositionFromControl Method。
GetPositionFromControl方法返回控件的实际当前位置,即使其位置由LayoutEngine确定。
您可以继续使用ControlAdded事件。
Dim i As Int32 = TableLayoutPanel1.GetPositionFromControl(e.Control).Row