salut
Disons que j'ai x labels, je veux tous les changer à l'aide d'une boucle, comment je peux faire ? Quelques choses comme ça :
mais ça marche pas !!:roll:Code:
1
2
3 for i = 0 to x label(i).text = "*" next
Version imprimable
salut
Disons que j'ai x labels, je veux tous les changer à l'aide d'une boucle, comment je peux faire ? Quelques choses comme ça :
mais ça marche pas !!:roll:Code:
1
2
3 for i = 0 to x label(i).text = "*" next
ils ont été créé comment tes labels ? un groupe de contrôles ?
pour faire ce que tu désire en VB6 .. ( et pas VBA ..) il faut faire un groupe de contrôle...
en vb.net, tu peux initialiser un tableau de labels contenant tes labels. Dans ce cas, tu passeras par la référence de ton label en appelant :
après, si tu dois le faire pour une ou deux boucles, l'interet est faible ;)Code:
1
2
3
4
5
6
7
8
9
10 Dim label as label(10) ' me rappelle plus de la syntaxe en vb label(0) = monlabel1 label(1) = labeltoto label(2) = labeltiti for i = 0 to x label(i).text = "*" next
Ça a presque marché
Je l'ai fait comme ça et ça me donne pas d'erreur..
Mais quand j'exécute, ça marche pas et une fenêtre m'apparait :Code:
1
2
3
4 Dim label(18) As Label For i = 1 To 18 label(i).Text = "*" Next
http://img691.imageshack.us/img691/1263/erreurvx.jpg
Essaye avec sa plutôt ;)
Cordialement,Code:
1
2
3
4
5
6
7
8
9 'Reservation de l'espace pour les labels Dim label (18) as label for i = 0 to 18 'Création du label label(i) = new label 'Ajout d'une valeur dans sont champ texte label(i).text = "*" next
:!: Mettez des commentaires, sa aide a la re-lecture :!:
euh....
si tu n'affectes rien dans ton tableau, tu penses que ca pointer sur quoi ?
:aie:
Tu viens de réserver de l'espace pour 18 label, et la, tu as un jolie tableau de 18 label nuls
ensuite, si tu commence ta boucle for a 0, c'est quand même mieux ;)
ça marche, mais ça ne fait le travail..
mon probleme c'est que j'ai 30 label dans l'interface, je vais simplifier en disant que quand je donne un numero x, alors x label doivent changer en "*".
C'est la prmiere fois que j'utilise un tableau avec des label, le probleme c'est que cette methode :
enregistre les données dans le tableau, mais elle ne les affiche pas dans les label,Code:
1
2
3
4
5
6 Dim label (18) as label for i = 0 to 18 label(i) = new label label(i).text = "*" next
disons que quand j'ecris label1.text ="**" label change, mais quand j'ecris label(1).text ="**" la colonne 1 du tableau change et pas label .
normal, tu as mis un nouveau label dans ton tableau, et pas une référence sur label1Citation:
isons que quand j'ecris label1.text ="**" label change, mais quand j'ecris label(1).text ="**" la colonne 1 du tableau change et pas label .
Comme je te disais 5 posts au-dessus, il faut que tu fasse :
évidemment, le but est de définir ton tableau de label à un seul endroit ;)Citation:
Dim label (18) as label
label(1)=label1
label(2)=label2
...
for i = 0 to 18
label(i) = new label
label(i).text = "*"
next
Bonjour,
Sinon il suffit de grouper les labels dans un container, et d'énumérer tout les controles de ce contener, on vérifie que c'est un label, on le cast et le tour est jouer, un peu comme dans cette discussion.
Je pense que c'est la méthode la plus simple.
On peux même sélectionner une parie des label en faisant en test sur le nom, genre si le nom commence par "LabAModif" faire ... En prenant soint de bien nommer les label que l'on veux changer LabAModifNom, LabAModifPrenom, LabAModifAge.
J'utilise cette technique régulièrement pour réinitialiser les champs de mes interfaces.:ccool:
je ne suis pas sur qu'il soit nécessaire de mettre "label(i) = new label"Citation:
Dim label (18) as label
label(1)=label1
label(2)=label2
...
for i = 0 to 18
label(i) = new label
label(i).text = "*"
next
puisque juste au dessus tu fait déja
"label(1)=label1
label(2)=label2"
//////////////////////////////////////////////////////////////////////////////////////////////////////////
par contre je remarque que tu veut travailler sur tes 30 labels
alors je te conseil effectivement de créer un tableau de 30 labels
mais plutôt que de créer 30 labels manuellement
tu devrais plutôt ajouter les 30 labels qui proviennent de ton code
c'est assé simple en plus, regarde:
et un simple label crée par le code, devient réel *si on peut dire* et va apparaitre sur ton formulaireCode:
1
2
3
4
5
6
7 'Positionnement du label label(i).Location = New System.Drawing.Point( X, Y) 'avec X -> coordonnées horizontales ' et Y -> coordonnées verticales 'ajout du label sur le formulaire MonFromulaire.Controls.Add(label(i))
:arrow: Intérêts:
- sa t'évitera de faire:
label(1) = label1
label(2) = label2
...
label(30) = label30- tu aurra une gestion compléte de tes lables
aprés a toi de faire deux boucles For pour que tes labels se placent tous seule :ccool:
PS: si sa fait trop d'un coup hésite pas me demander des détails ;)
Pour ceux que ca intéresse, une autre solution a été présentée dans ce post :ccool: