2013-06-12 68 views
0

多層板的控制我想與此代碼來訪問我的表單中的所有控件:如何訪問在vb.net

對每臺PC中Myform.control

做財產以後

我的問題是我在myform中有多層面板。例如「Myform」包含(textbox1,textbox 2,combobox1,panle1,panel2)。

Panel1的包含(panel11和文本框3)

面板2包含(panel22和textbox4和combobox2)

此外panel22包含(textbox5和panle222)

如何訪問 「所有」的「Myform」中的控件(文本框和組合框),而不考慮它們是否在面板中。

任何幫助,非常感謝。

+0

我可以問你爲什麼需要這個嗎? – Jamby

+0

我想要動態地將值插入到文本框和組合框中。 –

回答

0

像這樣的東西應該這樣做:

Private Sub EnumerateControl(parentControl As Control) 
    For Each child As Control In parentControl.Controls 
     Debug.WriteLine(child.Name) 
     If child.HasChildren Then EnumerateControl(child) 
    Next 
End Sub 

然後調用這個使用它:

EnumerateControl(Me) 'Pass the form control to start the enumeration 

這裏的關鍵是要測試是否有問題的控制有孩子,如果是枚舉所有通過調用EnumerateControl遞歸地控制該控件

+0

爲什麼傳遞ByRef?這種方法應該沒有什麼不同。 –

0

您可以通過遞歸方式訪問它們,例如:

Public Sub ProcessControls(ByRef Controls As ControlCollection) 
    For Each pc As Control In Controls 
     'Do whathever you want 

     If pc.Controls.Count Then 'If that control has child, process them 
      ProcessControls(pc.Controls) 
     End If 
    Next 
End Sub 
+0

感謝Jamby,它正常工作,正如Matt Wilko的解決方案一樣。 –