Variable dans un nom de control

Résolu
Azote99 Messages postés 4 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 9 août 2009 - 9 août 2009 à 07:52
Azote99 Messages postés 4 Date d'inscription mardi 5 décembre 2000 Statut Membre 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

8 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
9 août 2009 à 13:35
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
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 août 2009 à 08:19
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]
0
Azote99 Messages postés 4 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 9 août 2009
9 août 2009 à 08:28
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 août 2009 à 08:41
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

++
0

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

Posez votre question
alvinemambele Messages postés 72 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 31 mai 2013 15
9 août 2009 à 09:06
Quelle version de VB quee vous utiliser????



Un orateur trop long est comme une horloge qui sonne les minutes!
0
Azote99 Messages postés 4 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 9 août 2009
9 août 2009 à 09:46
Merci de la précision Pcpt!

Quelle version de VB quee vous utiliser????


Pour ma par j'utilise Visual Studio 2008
0
alvinemambele Messages postés 72 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 31 mai 2013 15
9 août 2009 à 10:02
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!
0
Azote99 Messages postés 4 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 9 août 2009
9 août 2009 à 17:18
Merci à toi Casy!!

c'est exactement ce que je cherchai à faire.

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

encore 100x merci!
0
Rejoignez-nous