在VB.net中动态添加usercontrol

时间:2008-12-17 09:35:34

标签: .net vb.net dynamic user-controls windows

我已经制作了一个自定义UserControl i Vb.net(Windows应用程序)。

如何将其动态添加到表单?

5 个答案:

答案 0 :(得分:12)

UserControl本质上只是另一个类。它继承自Control,因此您可以使用控件执行各种操作,但除此之外它只是一个类。因此,要将用户控件动态添加到表单,您需要执行以下操作:

  1. 创建控件的新实例。与Dim X As New MyControl()
  2. 一样
  3. 将控件作为子对象添加到表单中,添加到您想要的任何容器中。像Me.MyGreatTabPage.Controls.Add(X)一样。您也可以将其直接添加到表单中,因为表单也是一个容器。
  4. 设置容器内的控件位置。这将设置X.LocationX.Size
  5. 请记住,使用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