2012-11-11 88 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)