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

Windows Forms Discussion :

[C#] Une seule méthode pour plusieurs composants


Sujet :

Windows Forms

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Par défaut [C#] Une seule méthode pour plusieurs composants
    Bonjour,
    je n'arrive pas à trouver une solution à mon problème...

    j'ai 6 labels,
    1 ColorDialog,
    et je veux une méthode qui est appelé à chaque fois que l'on clique sur un des labels (facile).
    Dans cette méthode, j'ouvre le colorDialog et si l'utilisateur valide (btOK) je met la propriété backcolor du label sur lequel on a cliqué à colorDialog1.Color

    comment faire pour récuperer le label qui a été cliqué? L'objet sender de la méthode peut être utilisé?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    code stp

  3. #3
    Membre éprouvé Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Par défaut
    sender correspond à l'objet qui appele la méthode, donc je pense que oui

  4. #4
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Par défaut
    Oui mais comment faire pour transtiper sender parceque (Label)sender ca marche pas...

    lol y'a pas vraiment de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void label3_Click(object sender, System.EventArgs e)
    		{
    			if(colorDialog1.ShowDialog() == DialogResult.OK)
    			{
    				//sender.BackColor = colorDialog1.Color;				
    			}
    		}
    cette méthode est appelée a chaque fois que l'on clique sur un label (n'importe lequel des six).
    et ce que je veux changer c'est la couleur du label sur lequel on a cliqué

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Ca serait plus facilement réglé avec un contrôle héritant de label non ?

    C'est étrange que (Label)sender ne fonctionne pas...mais il faudrait voir le reste pour comprendre ce qui se passe.

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Par défaut
    je vais me penché sur un contrôle héritant de label
    il faut que je crée une nouvelle classe?

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    oui, tu crées une nouvelle classe, tu la fais hériter de Label, et tu redéfinis le Click

  8. #8
    ubu
    ubu est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 38
    Par défaut
    Comme l'a dit très justement chman,

    Tu peux utiliser le sender, qui n'est autre que le label qui a été cliqué...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void label_Click(object sender, System.EventArgs e) 
    { 
       if (sender is Label)
       {
         Label myLabel=(Label)sender;  
         if(colorDialog1.ShowDialog() == DialogResult.OK) 
        { 
           myLabel.BackColor = colorDialog1.Color;             
        } 
      }
    }
    Et associer cette méthode à tout tes labels...

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par ubu
    Et associer cette méthode à tout tes labels...
    Ce qui devient fort peu pratique si on travaille avec 240 labels...

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 15/05/2010, 20h10
  2. Une seule CSS pour plusieurs portlets
    Par sheepolata dans le forum Portails
    Réponses: 3
    Dernier message: 02/03/2010, 16h51
  3. [Joomla!] Une seule bdd pour plusieurs sites
    Par Imp rusg dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 23/02/2009, 09h16
  4. Réponses: 2
    Dernier message: 10/07/2007, 13h45
  5. Réponses: 7
    Dernier message: 01/02/2006, 15h49

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