Следующий код работает только для первой строки. Однажды в следующей строке он появляется внизу и работает вверх. Я сделал это раньше в другом приложении, поэтому я ссылался на этот код. Тем не менее, у меня разные результаты. Я хочу, чтобы строки шли сверху вниз, а не снизу вверх.Устранение неполадок в 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
Блок включает в себя строку «startTXT.Name =« start »& i &« TXT », но что такое« i »в этом случае? Я не вижу создания или инициализации i. – Andarta
Обновлено сообщение. i = 2 и увеличивается на 1 каждые два текстовых поля. Это значит, что все элементы управления имеют уникальное имя. Опять же, он начинается с 2, потому что первый набор текстовых полей был создан до запуска. Это start1TXT и end1TXT. – user287848
Каковы свойства строк в таблице TableLayoutPanel? Я предполагаю, что первая строка задана для заполнения, поэтому все, что пустое место между первой строкой текстовых полей и второй строкой текстовых полей, на самом деле является всей высотой первой строки в вашей таблице TableLayoutPanel. Включение отображения линий сетки поможет вам определить это, чтобы вы могли точно видеть, что делают строки/столбцы панели. – Andarta