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
41
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
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
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
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
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