Boucle For Each [Résolu]

Signaler
Messages postés
206
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
5 mars 2013
-
cs_JLuc01
Messages postés
206
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
5 mars 2013
-
Bonjour,

Petit probleme avec une boucle!

J'utilise le For Each suivant:
For Each c As Control In Me.Controls
    ' Something
Next c

Mais malheureusement, c ne prend que la valeur du SplitContainer (vu en Debug mode) et pas tout ce qui se trouve sur la Form.
Donc, je suis oblige de creer le For Each suivant...
For Each ctl As Control In Me.SplitContainer.Panel1.Controls
      ' Something         
Next ctl

... pour avoir ce qui se trouve sur le Panel1. Et ainsi de suite pour les autres Containers (Panel2..., probablement la meme chose pour un GroupBox...).

Je voudrais savoir s'il y a une facon de faire pour avoir une seule boucle qui verifierait tous les Controls sur une Form (et si possible, la Form comprise... mais la, je demande peut-etre beaucoup).
Merci,

A+
JLuc01

4 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
28
Bonjour,

Il suffit de faire ca récursivement :

Private Sub EnumControls(ByVal Parent As Control)
  'Ton traitement ici

  For Each c As Control In Parent.Controls
    Call EnumControls(c)
  Next
End Sub


Tu as juste à l'appeler avec
Call EnumControls(Me)


_____________
Kenji
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
28
Ou si tu travaille avec VB2010 ou supérieur :
Private Iterator Function EnumControls(ByVal Parent As Control) As IEnumerable(Of Control)
  Yield Parent
  For Each c As Control In Parent.Controls
    For Each c2 As Control In EnumControls(c)
      Yield c2
    Next
  Next
End Function


Appel :
For Each c In EnumControls(Me)
  ' Something
Next


_____________
Kenji
Messages postés
206
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
5 mars 2013
1
Merci pour la reponse.
Cela a l'air de marcher exactement comme je le voulais.

A+
JLuc01
Messages postés
206
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
5 mars 2013
1
Je travaille en VB2008.
Je n'ai pas encore regarde la deuxieme methode, mais ca a l'air interessant.
La recursivite n'est pas quelquechose que j'utilise beaucoup, donc quelquechose de nouveau a apprendre et a essayer de maitriser.
Merci encore.

A+
JLuc01