Я создал собственный UserControl i Vb.net (приложение для Windows).
Как я могу добавить это динамически в форму?





Я думаю, что то, что вы ищете, написано как this.Controls.Add (myControl) в C#. Я уверен, что в VB тоже очень похоже?
По сути, UserControl - это просто еще один класс. Он наследуется от Control, поэтому вы можете делать все, что делаете с элементами управления, но в остальном это просто класс. Таким образом, чтобы динамически добавить пользовательский элемент управления в вашу форму, вы должны сделать следующее:
Dim X As New MyControl()Me.MyGreatTabPage.Controls.Add(X). Вы также можете добавить его непосредственно в свою форму, потому что форма также является контейнером.X.Location и X.Size.Помните, что каждый экземпляр, который вы создаете с помощью New MyControl(), будет отдельным MyControl. Не делайте ошибки, постоянно создавая новые элементы управления и как-то размещая их друг над другом. Создайте и разместите элемент управления один раз. Назначьте его переменной-члену вашей формы, и когда вам нужно с ней работать, используйте эту переменную.
+1 за напоминание мне не создавать элемент управления каждый раз при изменении страницы вкладки.
Есть ли способ добавить элемент управления типа, указанного в строке, вместо создания нового экземпляра с его конструктором?
@AreejQadomi - Если количество возможностей ограничено, вы можете использовать оператор SELECT CASE. В противном случае вам понадобится так называемое «отражение». Это более длинная история.
Form.Controls.Add(Page.LoadControl("SomeUserControl.ascx"))
Затем следует сложная часть с захватом События в нем, поскольку его необходимо перезагружать при каждом запросе. Обычно я использую флаг ViewState, чтобы указать, что он уже загружен, и проверку наличия этого флага, чтобы увидеть, могу ли я перезагрузить его снова в OnInit.
Dim newControl As UserControl = LoadControl("~/Controls/DRQ/Create/UCNewControl.ascx")
Me.panelHolder1.Controls.Add(newControl)
For i As Integer = 1 To 10
Dim tb As New TextBox
tb.Top = 26 * i
tb.Left = 12
tb.Text = "text box " & i.ToString()
tb.Parent = Me
Next
Это метод добавления двух или более:
Private _userControlList As New List(Of YourControl)
Private Sub AddingControlOnPanel()
Dim index As Integer = _userControlList.Count + 1
Dim userControl As New YourControl
userControl.Location = New System.Drawing.Point(SomeLocation)
userControl.Size = New System.Drawing.Size(SomeSize)
userControl.Name = "userControl" + index.ToString
userControl.Visible = False
_userControlList.Add(userControl)
UserControlsPanel.Controls.Add(userControl)
userControl.Visible = True
End Sub
Я хочу указать, сколько пользовательских элементов управления будет добавляться при каждом запуске программы.