Если вас не волнует порядок (и я не могу представить причину, по которой вы это делаете) элементов управления, вы можете сделать это итеративно следующим образом (это довольно просто, поэтому я не думаю, что объяснение это необходимо). Должно быть намного эффективнее, чем любая рекурсия, особенно если у вас много вложенных элементов управления, хотя я сомневаюсь, что прирост производительности будет очевидным.

я есть несколько текстовых полей в winform, некоторые из них находятся внутри групповой коробки. Я попытался перебрать все текстовые поля в моей форме:

For Each c As Control In Me.Controls
    If c.GetType Is GetType(TextBox) Then
        ' Do something
    End If
Next

Но казалось, что они пропускаются внутри группового блока и зацикливаются только над другими текстовыми полями формы. Поэтому я добавил еще один цикл For Each для текстовых полей группы:

For Each c As Control In GroupBox1.Controls
    If c.GetType Is GetType(TextBox) Then
        ' Do something
    End If
Next

Интересно: есть ли способ перебрать все текстовые поля в форме - в том числе внутри группового блока - с помощью одного цикла For Each? Или какой-нибудь лучший / более элегантный способ сделать это?

Заранее спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос