我已经制作了一个自定义UserControl i Vb.net(Windows应用程序)。
如何将其动态添加到表单?
答案 0 :(得分:12)
UserControl本质上只是另一个类。它继承自Control,因此您可以使用控件执行各种操作,但除此之外它只是一个类。因此,要将用户控件动态添加到表单,您需要执行以下操作:
Dim X As New MyControl()
Me.MyGreatTabPage.Controls.Add(X)
一样。您也可以将其直接添加到表单中,因为表单也是一个容器。X.Location
和X.Size
。请记住,使用New MyControl()
创建的每个实例都是一个单独的MyControl。不要错误地重复创建新控件并以某种方式将它们放在彼此之上。创建并放置控件一次。将其分配给表单的成员变量,当您需要使用它时,请使用此变量。
答案 1 :(得分:3)
我认为你要找的是:C#中的this.Controls.Add(myControl)。我确定它在VB中也很相似吗?
答案 2 :(得分:2)
Form.Controls.Add(Page.LoadControl("SomeUserControl.ascx"))
然后是困难的部分,因为它需要在每次请求时重新加载事件。我通常使用一个ViewState标志来表示它已经加载并检查是否存在该标志以查看我是否可以在OnInit中重新加载它
Dim newControl As UserControl = LoadControl("~/Controls/DRQ/Create/UCNewControl.ascx")
Me.panelHolder1.Controls.Add(newControl)
答案 3 :(得分:0)
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
答案 4 :(得分:0)
这是添加两个或更多的方法:
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