我们可以通过名称访问UserControl
吗?举例来说,我已经做了UserControl
(在同一个项目)的名称uc1
,和一个叫Panel1
Panel
,所以像:按名称访问UserControl(字符串)
Dim a As String = "uc1"
Panel1.Controls.Add(a)
我们可以通过名称访问UserControl
吗?举例来说,我已经做了UserControl
(在同一个项目)的名称uc1
,和一个叫Panel1
Panel
,所以像:按名称访问UserControl(字符串)
Dim a As String = "uc1"
Panel1.Controls.Add(a)
你可以做这样的事情,而不是:
Dim c As Control = Me.Controls("uc1")
或
Dim c As Control = Me.Controls.Find("uc1", True)(0)
If c IsNot Nothing Then
Panel1.Controls.Add(c)
End If
但是,为什么不只是添加:
Panel1.Controls.Add(uc1)
(假设你的控制被存储作为内部uc1
- >Dim uc1 As Control ...
)
是。没有任何东西与您的代码片段中的内容密切相关,您无法将字符串添加到Controls集合中。但是你可以用一个字符串来索引Controls集合以获得控件引用。像这样:
Dim ctl as New MyUserControl
ctl.Name = "foo"
Panel1.Controls.Add(ctl)
...
Dim ctl as MyUserControl
ctl = DirectCast(Panel1.Controls("foo"), MyUserControl)