2011-12-17 88 views
0

如何通過循環遍歷容器中的所有控件以及包含控件的容器中的所有控件等等。VB.NET迭代通過控件容器

Form 
-Panel 
--Control 
--Tab 
----Control 
----Control 
--Tab 
----Control 

只檢索 - 面板,沒有其他控件

For Each cntrl As Control In Me.Controls 

Next 

我怎樣才能找回他們都在一個For Each循環,而不下面的IF /然後在堆棧的每級?

編輯:

Dim ctl As Control = Me 
Do 
    ctl = Me.GetNextControl(ctl, True) 
    'Do whatever you have to ctl 
Loop Until ctl Is Nothing 

這是迄今爲止我發現這樣做的最佳方法。

+0

這就是我發現也是最好的。 – dbasnett 2011-12-17 13:36:27

回答

2

您必須定義一個方法,該方法將容器內部的容器穿過recursively。事情是這樣的:

Dim _list As New List(Of Control) 
Public Sub GetChilds(container As Control) 
     For Each child As Control In container.Controls 
      _list.Add(child) 
      If (child.HasChildren) Then 
       GetChilds(child) 
      End If 
     Next 
End Sub 

要調用這個方法:

list=new List(Of Control) 
    GetChilds(Me) 
    For Each cntrl As Control In _list 
    .... 
    Next 
+0

我看到了作品。你怎麼看待上面的編輯? – Theveloper 2011-12-17 03:00:13