Variable dans un nom de control [Résolu]

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

8 réponses

Répondre au sujet
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 9 août 2009 à 13:35
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 9 août 2009 à 08:19
0
Utile
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
Azote99 4 Messages postés mardi 5 décembre 2000Date d'inscription 9 août 2009 Dernière intervention - 9 août 2009 à 08:28
0
Utile
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 9 août 2009 à 08:41
0
Utile
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
alvinemambele 73 Messages postés mardi 27 mai 2008Date d'inscription 31 mai 2013 Dernière intervention - 9 août 2009 à 09:06
0
Utile
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
Azote99 4 Messages postés mardi 5 décembre 2000Date d'inscription 9 août 2009 Dernière intervention - 9 août 2009 à 09:46
0
Utile
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
alvinemambele 73 Messages postés mardi 27 mai 2008Date d'inscription 31 mai 2013 Dernière intervention - 9 août 2009 à 10:02
0
Utile
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
Azote99 4 Messages postés mardi 5 décembre 2000Date d'inscription 9 août 2009 Dernière intervention - 9 août 2009 à 17:18
0
Utile
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.