Мне нужно динамически создавать текстовые поля. Это мой код, но с этим я создаю только одно текстовое поле:
Public Sub CreateTextBox()
Dim I As Integer
Dim niz As Array
For I = 1 To 5
Dim myTextBox = New TextBox
myTextBox.Text = "Control Number:" & I
Me.Controls.Add(myTextBox)
Next
End Sub
Итак, как я могу динамически создавать текстовые поля?
Спасибо!
Этот код фактически создает 5 экземпляров TextBox
и добавляет их в текущую форму. Проблема в том, что вы добавляете их один поверх другого. Для правильного отображения их необходимо использовать механизм компоновки.
Например, этот код добавит их к FlowLayoutPanel
сверху вниз.
Public Sub CreateTextBox()
Dim I As Integer
Dim panel as New FlowLayoutPanel()
panel.FlowDirection = FlowDirection.TopDown
For I = 1 To 5
Dim myTextBox = New TextBox
myTextBox.Text = "Control Number:" & I
panel.Controls.Add(myTextBox)
Next
Me.Controls.Add(panel)
End Sub
Вы также можете создать отдельную коллекцию добавленных текстовых полей, чтобы вы могли получить к ним доступ отдельно от коллекции Forms.Controls.
Также вы можете использовать свойство .Tag, чтобы каким-то образом идентифицировать созданный элемент.
Вам нужно установить свойство ID элемента управления уникальным для каждого элемента управления. Также помните, что с помощью динамически созданных элементов управления вы должны воссоздавать их с каждым сообщением страницы, чтобы иметь возможность извлекать любую информацию из коллекции элементов управления.
niz
? ОбъявлениеAs Array
почти наверняка является ошибкой в VB.