簡體   English   中英

在VB.net中動態添加usercontrol

[英]Dynamically add a usercontrol in VB.net

我已經定制了UserControl i Vb.net(Windows應用程序)。

如何將其動態添加到表單中?

UserControl本質上只是另一個類。 它繼承自Control,因此您可以使用控件執行各種操作,但除此之外它只是一個類。 因此,要將usercontrol動態添加到表單,您需要執行以下操作:

  1. 創建一個新的控件實例。 Dim X As New MyControl()
  2. 將控件作為子對象添加到表單中,添加到您想要的任何容器中。 Me.MyGreatTabPage.Controls.Add(X) 您也可以將其直接添加到表單中,因為表單也是一個容器。
  3. 設置容器內的控件位置。 那將是設置X.LocationX.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM