2012-11-11 56 views
0

我们可以通过名称访问UserControl吗?举例来说,我已经做了UserControl(在同一个项目)的名称uc1,和一个叫Panel1Panel,所以像:按名称访问UserControl(字符串)

Dim a As String = "uc1" 
Panel1.Controls.Add(a) 

回答

1

你可以做这样的事情,而不是:

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 ...

1

是。没有任何东西与您的代码片段中的内容密切相关,您无法将字符串添加到Controls集合中。但是你可以用一个字符串来索引Controls集合以获得控件引用。像这样:

Dim ctl as New MyUserControl 
ctl.Name = "foo" 
Panel1.Controls.Add(ctl) 

... 

Dim ctl as MyUserControl 
ctl = DirectCast(Panel1.Controls("foo"), MyUserControl)