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

C# Discussion :

Evénement MouseClick sur composant perso


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Points : 20
    Points
    20
    Par défaut Evénement MouseClick sur composant perso
    Bonjour à tous,
    j'ai déjà vu ce genre de question mais je n'ai pas trouvé la réponse.
    Voici mon problème.
    J'ai un composant qui dérive d'un Panel. Dans ce composant, il y a une ImageBox et une TextBox.
    Sur ma forme, je crée une instance de ce composant.
    J'ai ajouté les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Basket b = new Basket();
    b.AllowDrop = true;
    b.DragDrop += new DragEventHandler( bannette_DragDrop );
    b.DragEnter += new DragEventHandler( bannette_DragEnter );
    b.DragOver += new DragEventHandler( bannette_DragOver );
     
    b.MouseClick += new MouseEventHandler( bannette_MouseClick );
    avec entre autre comme méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void bannette_MouseClick( object sender, MouseEventArgs e )
    {
        if ( e.Button == System.Windows.Forms.MouseButtons.Right )
        {
          MessageBox.Show( "OK MouseClick" );
        }
    }
    Le problème est que je peux faire un drag-drop sur tout le composant et ses "sous"-composants de la feuille,
    mais par contre l'événement click ne fonctionne que dans l'espace entre l'ImageBox et la TextBox, mais pas sur les deux "sous"-composants.

    Si quelqu'un peut éclairer ma lanterne...

    Cordialement.

    Raphaël

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Si les éléments ImageBox et TextBox de ton Basket sont des Children, il faut que tu leur transmettes le comportement Click.

    Voici du monkey code (je n'ai pas le temps de faire du code qui compile) qui représente ce que j'essayerais de faire en premier...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ForEach(var c in b.Children)
    {
       if (c is ImageBox)
           c.MouseClick += new MouseEventHandler( myImageBox_MouseClick );
       if (c is TextBox)
           c.MouseClick += new MouseEventHandler( myTextBox_MouseClick );
    }

  3. #3
    Membre habitué Avatar de zhouyu
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 90
    Points : 143
    Points
    143
    Par défaut
    Salut.
    Si tu ajoutes dans ton composant perso le TextBox et l'ImageBox tu peux leur donner par la meme occasion ton callback de la l'event click en + de l'ajouter à ton panel dans ton constructeur.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monImage = new ImageBox();
    monImage.MouseClick += new MouseEventHandler( CALLBACK_FONCTION );
    où CALLBACK_FONCTION est le nom de ta fonction.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Bonsoir, et merci à vous deux pour vos réponses.

    J'ai utilisé le code fourni par 'Babyneedle' car mon but était de pouvoir savoir sur quel composant je cliquais (je peux en créer plusieurs sur ma fenêtre).

    Néanmoins j'ai essayé la méthode de 'zhouyu' (même si je pense que là, l'événement n'était une action interne au composant, mais plutôt une interaction avec l'environnement de la fenêtre). J'ai donc mis le code suivant dans mon composant perso :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    this.MouseClick += new MouseEventHandler( bannette_MouseClick );
    this._oImage.MouseClick += new MouseEventHandler( bannette_MouseClick );
    this._oName.MouseClick += new MouseEventHandler( bannette_MouseClick );
     
    ...
     
    private void bannette_MouseClick( object sender, MouseEventArgs e )
    {
    ...
    }
    et là je passe bien dans 'bannette_MouseClick' quelque soit l'endroit où je clique sur le composant.

    Encore merci pour les réponses.

    Afin de ne pas mourir idiot ce soir, peut-on m'expliquer pourquoi le drag-drop fonctionnait sur mon 'Basket' alors que le 'mouseClick' non ?

    Autre question plus culturelle : 'Babyneedle', qu'est-ce que du 'monkey code', s'il te plait ? Est-ce une expression canadienne ?

    Cordialement.

    Raphaël

  5. #5
    Membre habitué Avatar de zhouyu
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 90
    Points : 143
    Points
    143
    Par défaut
    Je ne suis pas sur mais je pense que le drag and drop fonctionne car les boutons n'interceptent pas cette event alors que le click oui et du coup ils ne le redonnent pas l'event au parent quand tu passes dessus.

    Pour le Monkey code perso j'en ai déduit que c'est du code à la va vite :p à confirmer ^^

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Autre question plus culturelle : 'Babyneedle', qu'est-ce que du 'monkey code', s'il te plait ? Est-ce une expression canadienne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pour le Monkey code perso j'en ai déduit que c'est du code à la va vite :p à confirmer ^^
    C'est du code que j'ai écrit directement dans la fenêtre de réponse et non dans Visual Studio, donc je n'avais aucune idée si ça allait compiler ou non. C'est quelque chose entre du code fonctionnel et du pseudocode...

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

Discussions similaires

  1. EventTrigger sur un composant perso + Template
    Par seiryujay dans le forum Windows Presentation Foundation
    Réponses: 14
    Dernier message: 03/11/2008, 17h27
  2. JScrollPane sur un composant perso
    Par dams77 dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 21/08/2007, 00h37
  3. Evènement sur composant dynamique
    Par Sakapatate dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 22/04/2007, 11h47
  4. [C#]Problème sur composant perso (Bouton Transparent)
    Par SLE dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/10/2005, 00h12
  5. ip fixeou nom de domaine sur ordi perso
    Par windob dans le forum Développement
    Réponses: 15
    Dernier message: 14/01/2004, 10h49

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