我做了一个自定义UserControl我Vb.net(Windows应用程序)。
我怎样才能dynamic地添加到表单?
一个UserControl本质上只是另一个类。 它继承自Control,所以你可以做各种你用控件做的事情,但是否则它只是一个类。 因此,要将usercontrol动态添加到表单中,请执行以下操作:
Dim X As New MyControl()
Me.MyGreatTabPage.Controls.Add(X)
。 您也可以直接将其添加到您的表单,因为表单也是一个容器。 X.Location
和X.Size
。 请记住,使用New MyControl()
创建的每个实例都将是一个单独的MyControl。 不要犯这样的错误,反复制造新的控制,并以某种方式把它们放在彼此之上。 创建并放置一次控件。 将它分配给一个成员变量到你的表单中,当你需要使用它时,使用这个变量。
我认为你在找什么写成:this.Controls.Add(myControl)在C#中。 我敢肯定它在VB中也非常相似?
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