Boucle For Each [Résolu]

Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
- - Dernière réponse : cs_JLuc01
Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
- 3 nov. 2012 à 10:56
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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
0
Merci
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
Commenter la réponse de Charles Racaud
Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
0
Merci
Merci pour la reponse.
Cela a l'air de marcher exactement comme je le voulais.

A+
JLuc01
Commenter la réponse de cs_JLuc01
Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
0
Merci
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
Commenter la réponse de cs_JLuc01

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.