Boucle For Each

Résolu
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 3 nov. 2012 à 09:58
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre 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
A voir également:

4 réponses

Utilisateur anonyme
3 nov. 2012 à 10:35
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
3
Utilisateur anonyme
3 nov. 2012 à 10:42
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
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
3 nov. 2012 à 10:52
Merci pour la reponse.
Cela a l'air de marcher exactement comme je le voulais.

A+
JLuc01
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
3 nov. 2012 à 10:56
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
0
Rejoignez-nous