Suppression controles [Résolu]

Signaler
Messages postés
84
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
25 juillet 2008
-
Messages postés
84
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
25 juillet 2008
-
bonjour, bonne année, santé, pognon, sexe, drogue tout se qui rend la vie belle quoi ...
juste une question pour comprendre.
j'ajoute des elements dans un panel (en fait j'ajoute des ele dans un panel, puis j'ajoute ce panel à mon panel principal: Explorer1.FlowLayoutPanel1), pas de souci
après je veux les supprimer souci :
javais fait :
Dim contro As Object
             For Each contro In Explorer1.FlowLayoutPanel1.Controls

                Explorer1.FlowLayoutPanel1.Controls.Remove(contro)

            Next contro

et ca ne les supprimait pas tous

en faisant
        Dim contro As Object
        Dim bool As Boolean
        bool = False
        While bool = False
            bool = True
            For Each contro In Explorer1.FlowLayoutPanel1.Controls
                Explorer1.FlowLayoutPanel1.Controls.Remove(contro)
                bool = False
            Next contro
        End While

ca marche, et je trouve ca taré ...
j'ai chécké que le for each boucle bien utniquement sur les panels, et non sur les sous obj de ces panels, ce qui aurait pu expliquer la sortie de for each
le fait est que ca marche, donc pas de souci, mais ca me turlupine (bonne résolution 2007, utiliser turlipiner à tire larigot)
merci ...

4 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Salut,

Je pense que c'est le même genre de problème que celui bien connu de suppression des éléments d'une liste dans une boucle for allant du premier au dernier : dans ta boucle, si tu supprime un élément, l'itérateur perd la position à laquelle il était.

Dans ton cas, au lieu de faire un for-each, il vaudrait mieux faire un While (Explorer1.FlowLayoutPanel1.Controls.Count > 0)
______________________________________
DarK Sidious
Messages postés
84
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
25 juillet 2008
1
marvelous !
merci, c très bon à savoir.

Des fois, vb, ca fait bien rigoler ...
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Salut,

Ce n'est pas un problème lié à VB, mais un problème d'algorithme :
Si tu as un tableau avec 100 éléments par exemple, et que tu le parcoure de l'élément 0 à l'élément 99 en supprimant chaque élément du tableau, arrivé à l'élément 50, tu aura bien supprimé les 50 premiers, mais tu ne pourras pas aller plus loin... la solution consiste à prendre le problème à l'envers : commencer par le 99ème élément pour remonter jusqu'au dernier. C'est le cas pour de très nombreux langages (tous ?).
______________________________________
DarK Sidious
Messages postés
84
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
25 juillet 2008
1
effectivement, je pensais candidement qu'un for each saurais débrouiller ce pb !