Variable dans un nom de control [Résolu]

Messages postés
4
Date d'inscription
mardi 5 décembre 2000
Dernière intervention
9 août 2009
- - Dernière réponse : Azote99
Messages postés
4
Date d'inscription
mardi 5 décembre 2000
Dernière intervention
9 août 2009
- 9 août 2009 à 17:18
Bonjour à tous

Mon interface possède 5 control Label nommé comme suit

Label1
Label2
Label3
Label4
Label5

J'aimerais pouvoir modifier les propriétés tel .text et .visible de tout les ces controls via une boucle a l'aide d'une boucle du genre

dim i as integer = 1
Do until i = 5
Label(i).visable = true
Label(i).text = "Affiche " & i
loop


Mais cette syntaxe ne fonctionne pas. Afin d'éviter de me taper l'écriture de chaque ligne ...

Label1.visable = true
Label1.text = "Affiche 1"
Label1.visable = true
Label1.text = "Affiche 2"
Label1.visable = true
Label1.text = "Affiche 3"
Label1.visable = true
Label1.text = "Affiche 4"
Label1.visable = true
Label1.text = "Affiche 5"



Je suis débutant et autodidacte ... j'ai tenté de trouver la solution sur le net mais sans succès ou bien ce qu'ils expliquaient était du chinois pour moi.

Voila merci d'avance pour vos réponses
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
alvinemambele, as-tu lu la totalité du sujet ? As-tu tester ton code?
Ton code ne marche pas sous .Net


Par contre, un moyen de contourner le problème est de passer par la collection de contrôles du conteneur et par le nom des contrôles :
dim i as integer = 1
Do until i = 5
  Me.Panel1.Controls("Label" & i.ToString).visible = true
  Me.Panel1.Controls("Label" & i.ToString).text = "Affiche " & i
loop




[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i

Dire « Merci » 3

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

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
salut,

label(x) représente un groupe de contrôles, pour le contrôle nommé label, or il n'y a plus de groupe de contrôles en vb.net

tu dois boucler sur tous les contrôles (for each) de la form et agir selon la propriété NAME

++

[hr]
Commenter la réponse de PCPT
Messages postés
4
Date d'inscription
mardi 5 décembre 2000
Dernière intervention
9 août 2009
0
Merci
Merci d'avoir répondu Pcpt.

Ok j'ai bien compris ce que tu dis mais la boucle (for each) va s'appliquer à tout les label se trouvant sur mon form?

car j'explique un peu plus mon projet ...

en faite jai 3 pannel contenant chacun 5 label ... mais chaque section "pannel" contient des informations différente.

Pannel1 contient les label1 à label5
Pannel2 contient les label6 à label10
Pannel3 contient les label11 à label15


est-ce que tu peux me donner une exemple de code à partir des informations que j'ai fourni? .. cela m'aiderai à visualiser.

Encore merci d'avance
Commenter la réponse de Azote99
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
c'est encore plus simple comme tu l'énonces puisque le PANEL est lui-même un conteneur

de ce fait tu vas boucler juste sur les contrôles d'un panel (donc tes labels)

l'exemple ici va changer le texte avec la numérotation du nom du contrôle comme tu le demandais :


        For Each c As Control In Me.Panel1.Controls
            c.Text = "Affiche " & c.Name.Substring(5)
            c.Visible = True
        Next


c'est plus clair?

évidemment si ton panel contient en plus autre chose que des labels, il faut vérifier le type de c

++
Commenter la réponse de PCPT
Messages postés
73
Date d'inscription
mardi 27 mai 2008
Dernière intervention
31 mai 2013
0
Merci
Quelle version de VB quee vous utiliser????



Un orateur trop long est comme une horloge qui sonne les minutes!
Commenter la réponse de alvinemambele
Messages postés
4
Date d'inscription
mardi 5 décembre 2000
Dernière intervention
9 août 2009
0
Merci
Merci de la précision Pcpt!

Quelle version de VB quee vous utiliser????


Pour ma par j'utilise Visual Studio 2008
Commenter la réponse de Azote99
Messages postés
73
Date d'inscription
mardi 27 mai 2008
Dernière intervention
31 mai 2013
0
Merci
voici le code:
i=1
Do until i = 5
Label(i).visable = true
Label(i).text = "Affiche " & i
i=i+1
loop


bonne chance
Un orateur trop long est comme une horloge qui sonne les minutes!
Commenter la réponse de alvinemambele
Messages postés
4
Date d'inscription
mardi 5 décembre 2000
Dernière intervention
9 août 2009
0
Merci
Merci à toi Casy!!

c'est exactement ce que je cherchai à faire.

J'ai tester et ca fonctionne numéro 1!

encore 100x merci!
Commenter la réponse de Azote99

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.