2015-10-16 85 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,在所有行,解決了這個問題。

相關問題