VB.NET Итерация через управляющие контейнеры - PullRequest
0 голосов
/ 17 декабря 2011

Как выполнить цикл по всем элементам управления в контейнере, а также по всем элементам управления в контейнере содержащего элемента управления и т. Д.других элементов управления

For Each cntrl As Control In Me.Controls

Next

Как я могу получить их все в цикле For Each без If / Then для каждого уровня в стеке?

EDIT:

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

Это пока лучший метод, который я нашел для этого.

1 Ответ

2 голосов
/ 17 декабря 2011

Вы должны определить метод, который 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
...