我已经在VB.NET(Windows应用程序)中制作了一个自定义的UserControl。
如何动态地将它添加到一个窗体中?
我已经在VB.NET(Windows应用程序)中制作了一个自定义的UserControl。
如何动态地将它添加到一个窗体中?
UserControl本质上只是另一个类。它继承自Control,因此您可以像处理控件一样处理它,但除此之外它只是一个类。因此,要动态将用户控件添加到窗体中,您需要执行以下操作:
Dim X As New MyControl()
Me.MyGreatTabPage.Controls.Add(X)
。您也可以直接将其添加到窗体中,因为窗体也是一个容器。X.Location
和X.Size
。请记住,每次使用New MyControl()
创建的实例都是单独的MyControl。不要重复创建新控件并以某种方式将它们放置在彼此上方。只需创建并放置控件一次。将其分配给窗体的成员变量,并在需要使用它时使用此变量。
我认为你要找的是C#中的写法:this.Controls.Add(myControl)。我相信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)
这是一种将两个或更多个数相加的方法:
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
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