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#] Evenement click dans un Panel


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [C#] Evenement click dans un Panel
    Bonjour,

    voilà, je crée une suite de panel de même dimension dynamiquement pour me créer une sorte de tableau.
    J'y associe l'évenement click pour chaque panel qui représente en fait une cellule de mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for(int i = 0;i < 15;i++)
    {
    Panel p_interieur = new Panel();
    p_interieur.BackColor = System.Drawing.Color.LightGoldenrodYellow;
    p_interieur.ForeColor = System.Drawing.SystemColors.ControlText;
    p_interieur.Location = new System.Drawing.Point(1, 1+(i*18));
    p_interieur.Name = "p_interieur_" + i.ToString();
    p_interieur.Size = new System.Drawing.Size(118, 18);
    p_interieur.Click += new System.EventHandler(Panel_X_Click);
    }
    J'aimerais bien que dans la méthode qui traite l'evenement click sur mon
    panel, je puisse retrouver le panel qui a été clické.
    J'avais testé la méthode ci dessous que je trouve peut etre un peu lourde mais qui marchait avec des Textbox et non pas avec des panels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void Panel_X_Click(object sender, System.EventArgs e)
    {
            for(int i = 0; i < this.Controls.Count;i++)
           {
                  if(this.Controls[i].Capture == true)
                 {
                  this.Controls[i].BackColor = System.Drawing.SystemColors.ActiveCaption;      
     
                  }
           }	
    }
    Je vous remercie d'avance.

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sender.BackColor = System.Drawing.SystemColors.ActiveCaption;

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour la réponse mais le compilateur me met cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Documents and Settings\Administrateur\Mes documents\Projets Visual Studio\NetScheduler\Form1.cs(476): 'object' ne contient pas de définition pour 'BackColor'

  4. #4
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    J'avais oublie que C# etait tatillon a ce niveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Panel tmpPanel = sender;
    tmpPanel.BackColor = System.Drawing.SystemColors.ActiveCaption;
    a moins qu'il y ait plus joli/efficace mais ca devrait marcher

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Parfait ça marche très bien ainsi.

    J'ai juste dû faire un petit casting sinon il y avait une erreur lors de la compilation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Panel tmpPanel = (Panel)sender; 
    tmpPanel.BackColor = System.Drawing.SystemColors.ActiveCaption;
    Encore merci !

  6. #6
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Pensez au bouton Résolu Merci

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

Discussions similaires

  1. Stop dans boucle While en attente evenement click
    Par meud007 dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/04/2011, 20h39
  2. Réponses: 4
    Dernier message: 18/09/2008, 14h28
  3. Réponses: 4
    Dernier message: 04/08/2008, 16h29
  4. Réponses: 15
    Dernier message: 21/07/2005, 15h05
  5. [vb.net] retourner une valeur dans l'evenement click
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/05/2005, 13h06

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