2015-10-16 213 views
0

以下代码仅适用于第一行。一旦进入下一行,它就会出现在底部,然后继续前进。我之前在另一个应用程序中完成了此操作,因此我引用了该代码。但是,我得到了不同的结果。我希望行从顶部到底部,而不是从底部到顶部。无法将控件添加到TableLayoutPanel

变量whichcolumn = 2起初是因为前两个文本框已经创建。变量whichRow = 0。变量i = 2并存在给所有控件一个唯一的名称。所有列在运行时间之前存在。

Private Sub Add_Click(sender As System.Object, e As System.EventArgs) Handles addBTN.Click 
     If whichColumn < 8 Then 
      Dim startTXT As New TextBox 
      Dim endTXT As New TextBox 
      startTXT.Name = "start" & i & "TXT" 
      endTXT.Name = "end" & i & "TXT" 
      rangesPanel.Controls.Add(startTXT, whichColumn, whichRow) 
      whichColumn += 1 
      rangesPanel.Controls.Add(endTXT, whichColumn, whichRow) 
      whichColumn += 1 
      If Label3.Visible = False Then 
       Label3.Visible = True 
       Label4.Visible = True 
      ElseIf Label5.Visible = False Then 
       Label5.Visible = True 
       Label6.Visible = True 
      ElseIf Label7.Visible = False Then 
       Label7.Visible = True 
       Label8.Visible = True 
      End If 
      i += 1 
     Else 
      rangesPanel.RowStyles.Add(New RowStyle(SizeType.AutoSize)) 
      rangesPanel.RowCount += 1 
      whichColumn = 0 
      whichRow += 1 
      Dim startTXT As New TextBox 
      Dim endTXT As New TextBox 
      startTXT.Name = "start" & i & "TXT" 
      endTXT.Name = "end" & i & "TXT" 
      rangesPanel.Controls.Add(startTXT, whichColumn, whichRow) 
      whichColumn += 1 
      rangesPanel.Controls.Add(endTXT, whichColumn, whichRow) 
      whichColumn += 1 
      i += 1 
     End If 
    End Sub 

enter image description here

+0

块包含“startTXT.Name =”start“&i&”TXT“行,但在这种情况下”i“是什么?我没有看到我的实例化或初始化。 – Andarta

+0

更新后。 i = 2并每两个文本框增加一个。这是所有的控件都有一个独特的名字。再次,它从2开始,因为第一组文本框是在运行时间之前创建的。他们是start1TXT和end1TXT。 – user287848

+1

有关TableLayoutPanel的行的属性是什么?我的猜测是第一行设置为填充,所以发生的是第一行文本框和第二行文本框之间的所有空白实际上是TableLayoutPanel中第一行的整个高度。打开显示网格线将帮助您确定这一点,以便您可以准确查看面板的行/列正在执行的操作。 – Andarta

回答

0
Private Sub Add_Click(sender As System.Object, e As System.EventArgs) Handles addBTN.Click 
    If whichColumn < 8 Then 
     Dim startTXT As New TextBox 
     Dim endTXT As New TextBox 
     startTXT.Name = "start" & i & "TXT" 
     endTXT.Name = "end" & i & "TXT" 
     rangesPanel.Controls.Add(startTXT, whichColumn, whichRow) 
     whichColumn += 1 
     rangesPanel.Controls.Add(endTXT, whichColumn, whichRow) 
     whichColumn += 1 
     If Label3.Visible = False Then 
      Label3.Visible = True 
      Label4.Visible = True 
     ElseIf Label5.Visible = False Then 
      Label5.Visible = True 
      Label6.Visible = True 
     ElseIf Label7.Visible = False Then 
      Label7.Visible = True 
      Label8.Visible = True 
     End If 
     i += 1 
    Else 
     rangesPanel.RowStyles.Add(New RowStyle(SizeType.Absolute, 22)) 
     rangesPanel.RowCount += 1 
     whichColumn = 0 
     whichRow += 1 
     Dim startTXT As New TextBox 
     Dim endTXT As New TextBox 
     startTXT.Name = "start" & i & "TXT" 
     endTXT.Name = "end" & i & "TXT" 
     rangesPanel.Controls.Add(startTXT, whichColumn, whichRow) 
     whichColumn += 1 
     rangesPanel.Controls.Add(endTXT, whichColumn, whichRow) 
     whichColumn += 1 
     i += 1 
    End If 
End Sub 

更改SizeTypePercentAbsolute,在所有行,解决了这个问题。

相关问题