IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

modifier une propriété de plusieurs boutons à l'aide d'une boucle IF


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 97
    Points : 51
    Points
    51
    Par défaut modifier une propriété de plusieurs boutons à l'aide d'une boucle IF
    Bonsoir,

    J'ai une appli qui fait appel à 25 boutons.
    Lorsque je clique sur l'un des boutons, son BorderColor doit devenir rouge et celui des 24 autres noir. De tel sorte à n'avoir toujours qu'un seul bouton rouge et les autres noir.

    J'utilise pour cela la fonction suivante

    Protected Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
    Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, _
    Button8.Click, Button9.Click, Button10.Click, Button11.Click, Button12.Click, Button13.Click, Button14.Click, _
    Button15.Click, Button16.Click, Button17.Click, Button18.Click, Button19.Click, Button20.Click, Button21.Click, _
    Button22.Click, Button23.Click, Button24.Click, Button25.Click

    Dim i As Integer, Nbre_Bouton = 25
    Dim Bouton As New Button()
    Dim Nr_Bouton As Button = DirectCast(sender, Button)
    For i = 1 To Nbre_Bouton
    Bouton.ID = "Button" & i
    Bouton.BorderColor = Drawing.Color.BlueViolet
    Next
    Nr_Bouton.BorderColor = Drawing.Color.Red

    End Sub

    Grâce a "sender" (et a Sperot51 qui m'en a expliqué le fonctionnement) je sais quel bouton doit devenir rouge et donc je voulais utiliser la boucle if pour "noircir" les autres

    Pour passer en revu tous les boutons à noircir, j'ai instancié un nouveau bouton dont je change l'ID avec la boucle IF.

    Mais voilà, même si en mode déboggage je vois bien l'ID de Bouton prendre tour à tour celle de mes 25 boutons, le cadre ne change pas de couleur.

    Vous l'aurez compris, ma question est : Pourquoi?

    Y a t'il plus simple ou plus "programmation correct" pour le faire?



    Merci d'avance pour vos lumières
    Tommy

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    la programmation objet, ca ne s'invente pas, je te propose de lire le cours suivant
    http://plasserre.developpez.com/vsommair.htm

    tu mélanges pas mal de choses et ton code ne peut pas fonctionner ainsi


    pour résoudre ton problème qui est simple, il faut avoir une collection contenant tes 25 boutons, faire un for each de cette collection pour modifier la couleur
    et en suite modifier la couleur du bouton cliqué

    si tu ne comprends pas ce que je viens de dire, qui prend 5 lignes de code, je t'invite à nouveau à lire le cours qu'à écrit Mr Lasserre

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 97
    Points : 51
    Points
    51
    Par défaut
    Effectivement, ça ne s'invente pas et c'est pour cette raison que je fais appel à des personnes bien plus compétente.

    Cela me permet d'obtenir des infos que l'on ne trouve ou ne comprend pas forcement dans les cours!

    Merci donc pour tes conseils qui jusqu'ici m'ont été très utiles. J'ai pu mettre en application les collections dans mon exemple. Et là ou l'échange avec une personne compétente comme toi devient riche c'est par exemple maintenant :

    La collection m'a permis de travailler sur un ensemble d'objets du même type. Mais il faut ajouter tous ces objets à cette collection, soit un à un

    col.Add(TextBox1)
    col.Add(TextBox2)
    col.Add(TextBox3)
    ...

    Là ou je bloque, c'est de pouvoir automatiser dans le sens ou, soit il existe une procédure permettant de rechercher les objets dans une page, soit de la créer à l'aide d'une ou plusieurs méthodes.

    Comment ferais-tu pour rajouter 125 TextBox à une collection pour pouvoir y travailler plus aisément?

    Encore merci pour ton aide Sperot51, qu'elle soit sous forme de ligne de code ou d'aide à la recherche de tuto et autres... Car lorsqu'on débute, avec la tête sous l'eau, on ne trouve pas forcément les bonnes infos au bon moment

    Bonne soirée,
    Thierry.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    y a deja tout ce qu'il faut dans le framework
    c'est une des phrases qu'il faut se dire qu'on est sur le point d'écrire plus de 3 lignes pour faire un truc

    ta form est en fait un controle comme les autres, tous les controles héritent de la classe control (button, panel et même form donc comme je viens de dire)
    un control peut avoir plusieurs control sur lui (une form t'as mis des boutons et autre dessus)
    un panel peut aussi un contenir, mais il meme possible de mettre un bouton sur un bouton

    bref tout ca pour dire que les controles qui sont sur un controle sont dans la propriétés controls de ce control
    jusque là tout est sous controle (blague)

    donc ce que je disais c'est que d'avoir une collection pour retrouver tes textbox c'est pratique, que tu la créé toi même ou que tu utilises celle existante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for each ctrl as control in me.controls
      if typeof ctrl is textbox then
        dim b as button ' pas new
        b = directcast(ctrl, textbox)
      end if
    next
    ceci pourrait surement t'aider, mais s'il y a des textbox que tu ne veux pas, il faudrait par exemple les poser sur un panel et donc tu ferais in monpanel.controls pour les

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 97
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par sperot51 Voir le message

    bref tout ca pour dire que les controles qui sont sur un controle sont dans la propriétés controls de ce control
    jusque là tout est sous controle (blague)
    Donc c'est comme les poupées russes, tous s'enboite et grâce à ce fonctionnement de poupées russes, on peut retrouver facilement les objets. Ca devient plus claire effectivement.

    Allez, on passe au cas pratique et je vais m'efforcer de mettre cela en oeuvre

    Merci beaucoup Sperot51

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier les propriétés d'un bouton créé par une macro
    Par anthony78340 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 12/03/2014, 08h24
  2. Modifier plusieurs lignes à l'aide d'une sous-table
    Par ForgetTheNorm dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/01/2012, 21h39
  3. Modifier une propriété de plusieurs fenêtres
    Par nahouto dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 17/06/2009, 15h35
  4. Modifier une propriété sur plusieurs clips
    Par soubasou dans le forum Flash
    Réponses: 1
    Dernier message: 18/02/2009, 11h21
  5. Modifier les propriétés d'un TShape à l'aide d'une variable
    Par agentchico dans le forum C++Builder
    Réponses: 10
    Dernier message: 24/04/2008, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo