Manipuler plusieurs labels en même temps

Résolu
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010 - 15 juil. 2010 à 15:18
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010 - 16 juil. 2010 à 20:57
Bonjour à tous,
J'ai dans mon programme une groupbox avec à l'intérieur 10 labels.
Je souhaiterais manipuler les labels (avec les fonctions Hide et Show) mais en utilisant une méthode qui évite de manipuler les labels un par un.
Je programme avec Visual Basic 2008.
Merci de votre aide.

7 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 juil. 2010 à 02:39
La collection 'Controls' prend en compte les contrôles dans l'ordre du concepteur de vue (l'ordre inverse dans lequel ils ont été créés, voir fichier : NomFormulaire.Designer.vb).

Je pense qu'il veut afficher les labels dont le texte est "A" dans ce cas ce sera :

For Each Label In GroupBox1.Controls
    Label.Visible (Label.Text "A")
Next


Autre chose, avec ce code, la variable 'Label' est de type 'Control', l'opération fonctionnera alors pour tous les types de contrôles insérés dans le groupbox, si tu insère un bouton il ne sera donc pas visible si son texte n'est pas "A"

Si tu dois ajouter d'autres types de contrôles dans ce groupbox tu peux utiliser la condition suivante :

If TypeOf(Objet) Is Label Then
End If


Ce qui nous donne :

For Each C As Control In GroupBox1.Controls
    If TypeOf (C) Is Label Then
         DirectCast(C, Label).Visible (DirectCast(C, Label).Text "A")
    End If
Next


Bien qu'ici le DirectCast ne soit pas une obligation car seule les propriétés de bases du Label sont utilisés (Text et Visibledéjà présentes dans la classe 'Control' de base). Mais c'est plus propre et cela permet de mieux appréhender le concept en cas de contrôles avec des propriétés plus étendues.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 juil. 2010 à 15:37
Salut
For Each Label In GroupBox1.Controls
            Label.visible = True
        Next
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 juil. 2010 à 15:40
Je corrige
 For Each Label In GroupBox1.Controls
            Label.show()
'ou          Label.hide()
        Next
0
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010
15 juil. 2010 à 17:34
ok merci c'est exactement ce qu'il me fallait
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010
15 juil. 2010 à 18:12
Juste une dernière question : dans mes 10 labels, j'ai 5 labels dont le text = "A" et 5 autres dont le text = "B".
Je voudrais utiliser votre méthode pour faire :
For Each Label In GroupBox1.Controls
Show('Tous les labels dont le text = "A")
Next

Est-ce possible ? Si oui, merci de m'indiquer la méthode.
Merci de votre aide.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 juil. 2010 à 22:28
Bonsoir
Tu veux que 5 label avec a et 5 avec b
Quel label vont avoir "a"
le for each passe sur toute les labels du groupebox mais je ne sais pas dans quel ordre
j'ai essayé ça

Dim i As Integer
        i = 1
        For Each Label In GroupBox1.Controls
            If i < 6 Then
                Label.text = "a"
            Else
                Label.text = "b"
            End If
            i = i + 1
            Label.show()
        Next

avec le debugg j'ai constaté que le for each commençait par le dernier label c.a.d le dernier que tu as mis sur le form
et ensuite dans l'ordre décroissant
0
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010
16 juil. 2010 à 20:57
Ok merci de votre aide à tous, mon problème est désormais résolu.
0
Rejoignez-nous