|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : décembre 2007 Messages : 246 ![]() |
Bonjour à tous,
dans le but de simplifier mon code je cherche la méthode me permettant d'appliquer une actions à plusieurs objet en même temps sans devoir écrire une ligne de code pour chaque objet. Actuellement si je veux changer la couleur de police à mes 10 textBox je fais ces 10 lignes: Code :
Merci de votre aide, bonne journée!! |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Benoît Inscription : février 2003 Messages : 1 660 ![]() |
Si c'est tout tes textbox qui doivent changer de couleur. Tu peux parcourir la liste des controles de la form et tester si ce sont des TextBox.
ou alors tu peux jouer avec la propriété tag ou encore faire un List<Control> que tu initialises au début avec les controles necessaires
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : décembre 2007 Messages : 246 ![]() |
Bonjour BenoitM,
merci pour cette réponse rapide, l'idée de la liste me plait bien mais peux tu m'en dire plus sur la proprieté "Tag" ou me poster un petit exemple avec la propriété "Tag" histoire de me mettre le pied à l'étrier... Merci d'avance. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Benoît Inscription : février 2003 Messages : 1 660 ![]() |
Tag est une propriété de type string de Control. Donc tous les dérivés de control ont cette propriété.
Tu peux par exemple via le designer y mettre : "ToChangeColor" et puis faire Code :
Initialiser une List<Control> a l'avantage d'être plus rapide (tu ne parcoureras que les controls necessaire et non tout les controls de la form)
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
||
|
|
10
|
|
|
#5 |
|
Membre confirmé
![]() Emmanuel BastienDéveloppeur .Net / Delphi Inscription : juillet 2002 Messages : 108 ![]() |
Bonjour,
Juste une petite précision, la propriété Tag n'est pas un type string mais Object. On peut donc y assigner n'importe quoi. C'est en mode Design qu'il n'est possible d'y assigner qu'une string... eb. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Benoît Inscription : février 2003 Messages : 1 660 ![]() |
Ah oui autant pour moi
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
|
|
#7 | ||||
|
Membre Expert
![]() Analyste / Programmeur / DBA Inscription : juillet 2006 Messages : 1 930 ![]() |
Histoire d'être complet, voici en utilisant une boucle
(c'est en vb mais tu peux traduire le code ici) Ici, on change la couleur de fond de TOUTES les TextBox présent sur le formulaire (attention, je crois que si un textbox se trouve dans un autre conteneur (une GroupBox par exemple), elle sera pas prise en compte dans la boucle). Code :
Code :
Comme ça, tu as toutes (y en a sûrement encore d'autres mais disons les plus courantes) les options à ta disposition.
__________________
Kropernic (anciennement Griftou). |
||||
|
|
10
|
|
|
#8 |
|
Membre à l'essai
![]() Inscription : décembre 2007 Messages : 246 ![]() |
![]() Merci à tous pour votre aide je retiens vos méthodes, j'ai abandonné l'idée de faire avec une list d'objet car bien que cela fonctionne pour les couleurs c'est plus compliqué lorsqu'il s'agit de BorderStyle. Je me penche sur la solution de Kropernic qui est selon moi la plus rapide et la plus simple mais je n'arrive pas à l’implémenter correctement, le compilo me remonte cette erreur: Erreur 1 Un membre 'System.Windows.Forms.Control.Controls' ne pouvant pas être appelé ne peut pas être utilisé comme une méthode. Code :
((TextBox)this.Controls("Txt" + i.ToString())).BackColor = Color.Black; |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Benoît Inscription : février 2003 Messages : 1 660 ![]() |
Code :
((TextBox)this.Controls["Txt" + i.ToString()]).BackColor = Color.Black;
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
|
|
#10 | |
|
Membre à l'essai
![]() Inscription : décembre 2007 Messages : 246 ![]() |
Citation:
![]() Code :
((Label)this.Controls["Label" + "1"]).ForeColor = System.Drawing.Color.Blue; |
|
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() Benoît Inscription : février 2003 Messages : 1 660 ![]() |
C'est que "Label1" n'existe pas dans ta form
sinon Code :
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
||
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Analyste / Programmeur / DBA Inscription : juillet 2006 Messages : 1 930 ![]() |
1°
Ton label se nomme-t-il bien "Label1" ? 2° Ton label se trouve-t-il bien directement dans l'objet Form ? En effet, s'il est contenu par un GroupBox ou un Panel par exemple, il se trouve alors dans la collection de contrôles du GroupBox ou du Panel. Par conséquent, en cherchant dans les contrôles du Form, tu obtiens une erreur.
__________________
Kropernic (anciennement Griftou). |
|
|
00
|
|
|
#13 |
|
Expert Confirmé
![]() Benoît Inscription : février 2003 Messages : 1 660 ![]() |
si c'est le cas 2 tu as une option tu as
je te laisse regarder comment ca marche dans la doc
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
|
|
#14 |
|
Membre à l'essai
![]() Inscription : décembre 2007 Messages : 246 ![]() |
Au moins je ne trahi pas le préfixe du titre "Débutant" !!
![]() Mon Label est bien dans un GroupBox, j'ai modifié ça fonctionne parfaitement !! Merci pour votre patience et vos explications, j'ai beaucoup appris sur le coup !!! ![]()
|
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Analyste / Programmeur / DBA Inscription : juillet 2006 Messages : 1 930 ![]() |
C'est à ça que sert la communauté !
Après toutes les fois où elle m'est venue en aide, il est normal que j'aide à mon tour
__________________
Kropernic (anciennement Griftou). |
|
|
00
|
|
|
#16 | ||
|
Membre à l'essai
![]() Inscription : décembre 2007 Messages : 246 ![]() |
Bonjour,
je déterre le sujet car je bloque pour un la même chose mais avec des Bitmap, es ce possible? Merci pour vos réponses. Code :
|
||
|
|
00
|
|
|
#17 |
|
Expert Confirmé
![]() Benoît Inscription : février 2003 Messages : 1 660 ![]() |
le bitmap il est contenu dans quoi?
une pictureBox? c'est quoi PicDrag?
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
|
|
#18 | |
|
Membre à l'essai
![]() Inscription : décembre 2007 Messages : 246 ![]() |
Citation:
ces Bitmap (PicDrag , Pic1, Pic2, Pic3, Pic4, etc..) sont déclarés en global, ils ne sont pas dans des conteneurs ou autre objet. Code :
((Bitmap)this.????["Pic" + PicDragIndex.ToString()]) = PicDrag; Un truc compliqué de débutant quoi ..!!! |
|
|
|
00
|
|
|
#19 |
|
Membre à l'essai
![]() Inscription : décembre 2007 Messages : 246 ![]() |
Ce n'est donc pas possible pour les variables ou autres objets que les controls?
|
|
|
00
|
|
|
#20 |
|
Expert Confirmé
![]() Benoît Inscription : février 2003 Messages : 1 660 ![]() |
alors il faut creer un Dictionnary<string,bitmap>
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com