4

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

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

4

5 回答 5

14

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

  1. 创建控件的新实例。像Dim X As New MyControl()
  2. 将控件作为子对象添加到您想要的任何容器中。喜欢Me.MyGreatTabPage.Controls.Add(X)。您也可以直接将其添加到您的表单中,因为表单也是一个容器。
  3. 设置容器内的控件位置。那将是设置X.LocationX.Size

请记住,您创建的每个实例New MyControl()都是一个单独的 MyControl。不要犯重复创建新控件并以某种方式将它们放在一起的错误。创建并放置一次控件。将其分配给表单的成员变量,当您需要使用它时,请使用此变量。

于 2008-12-17T09:47:46.943 回答
3

我认为您要查找的内容写为: this.Controls.Add(myControl) 在 C# 中。我敢肯定它在VB中也很相似?

于 2008-12-17T09:40:12.747 回答
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)
于 2008-12-17T09:52:12.037 回答
1

这是添加两个或更多的方法:

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
于 2012-09-18T14:20:17.557 回答
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
于 2008-12-17T10:32:59.037 回答