カスタム UserControl i Vb.net (Windows アプリケーション) を作成しました。
これをフォームに動的に追加するにはどうすればよいですか?
カスタム UserControl i Vb.net (Windows アプリケーション) を作成しました。
これをフォームに動的に追加するにはどうすればよいですか?
UserControl は、本質的に単なる別のクラスです。これは Control から継承されるため、コントロールで行うあらゆる種類の操作を行うことができますが、それ以外は単なるクラスです。したがって、フォームにユーザーコントロールを動的に追加するには、次のようにします。
Dim X As New MyControl()
Me.MyGreatTabPage.Controls.Add(X)
。フォームはコンテナでもあるため、フォームに直接追加することもできます。X.Location
とX.Size
.作成する各インスタンスNew MyControl()
は個別の MyControl になることに注意してください。新しいコントロールを繰り返し作成し、それらを重ねて配置するという間違いを犯さないでください。コントロールを一度作成して配置します。フォームのメンバー変数に割り当て、それを使用する必要がある場合は、この変数を使用します。
あなたが探しているのは次のように書かれていると思います: this.Controls.Add(myControl) in C#. 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)
これは、2 つ以上を追加する方法です。
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