Если вас не волнует порядок (и я не могу представить причину, по которой вы это делаете) элементов управления, вы можете сделать это итеративно следующим образом (это довольно просто, поэтому я не думаю, что объяснение это необходимо). Должно быть намного эффективнее, чем любая рекурсия, особенно если у вас много вложенных элементов управления, хотя я сомневаюсь, что прирост производительности будет очевидным.
я есть несколько текстовых полей в 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? Или какой-нибудь лучший / более элегантный способ сделать это?
Заранее спасибо.