2015-10-16 2 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 »в этом случае? Я не вижу создания или инициализации i. – Andarta

+0

Обновлено сообщение. i = 2 и увеличивается на 1 каждые два текстовых поля. Это значит, что все элементы управления имеют уникальное имя. Опять же, он начинается с 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 

Изменение SizeType от Percent к Absolute, по всем строкам, решить эту проблему.

Смежные вопросы