我們可以通過名稱訪問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)