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 :

Evénement MouseMove avec Click Gauche


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut Evénement MouseMove avec Click Gauche
    Bonjour,

    J'ai un certain nombre de controls dans un panel, et je souhaiterai pouvoir invoquer une méthode sur chaque control lorsque je passe dessus en gardant le click gauche appuyé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void light_MouseMove(object sender, MouseEventArgs e)
    {
    Light light = (Light)Sender;
    if(e.Button == MouseButtons.Left)
    light.Enable();
    }
    En procédant ainsi, le click n'est pas détecté si il est déjà appuyé.

    Y'a t'il une solution simple ?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Consultant informatique
    Inscrit en
    Juin 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 130
    Par défaut
    Bonjour,

    moi ce que je ferais, s'est à l'évènement clic gauche tu regarde la position du curseur et tu compare avec les positions de tes controls.

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    une solution simple :

    Regarder dans les evenements MouseMove de chaque control l'état de la souris

    The Monz, Toulouse

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut
    Citation Envoyé par OLman135 Voir le message
    Bonjour,

    moi ce que je ferais, s'est à l'évènement clic gauche tu regarde la position du curseur et tu compare avec les positions de tes controls.
    J'ai effectivement essayé cette solution, mais le problème est le même, lorsque le bouton est déjà cliqué il ne se passe rien.

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    une solution

    Tu fais dans le mousemove , un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (!button1.ClientRectangle.Contains(e.Location))
                {
                    label1.Text = "Outside the control";
                    label1.Focus();
                }
    Dans l'exemple, j'ai fait 4 boutons... et sur le mouseMove, je gère le fait
    que si je sors en dehors des limites de mon controle, je file le focus à quelqu'un d'autre.

    C'est juste un exemple, mais bon, ca peut te donner des pistes déja !

    A priori, en faisant cela, tu auras le mouse Move qui sera levé sur les autres controles ensuite....

    Et l'état du bouton sera correcte

    voila

    Résolu ou presque ?

    The Monz, Toulouse

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut
    Salut,

    Merci de ta réponse, j'ai essayé mais sans résultats, en restant clicker les autre contrôles ne s'activent pas. J'ai peut être mal interprété.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void light_MouseMove(object sender, MouseEventArgs e)
    {
        Light light = (Light)sender;
     
        if(e.Button == MouseButtons.Left)
       {
            light.Enable();
       }
     
       if(!light.ClientRectangle.Contains(e.Location))
       {
           label1.Focus();
       }
     
    }

  7. #7
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Comme le mousemove dans le control n'est levé que si le curseur de la souris est sur le control, tester la présence dans la zone client me semble un peu redondant.

    Pour rappel (MSDN) :
    Les événements de souris se produisent dans l'ordre suivant :
    MouseEnter
    MouseMove
    MouseHover / MouseDown / MouseWheel
    MouseUp
    MouseLeave

    Donc une gestion du MouseLeave peut-être ?

    Toutefois, cabler cela sur chaque control est assez lourd, je te conseillerai plutôt par exemple d'inscrire chacun de ces controls dans une classe qui gére ce type de comportement (classe qui posséde un tableau de controls pour lesquels elle a positionner les handlers qui vont bien et avec potentiellement des delegates fourni lors de l'inscription).
    (Ou pourquoi pas directement gérer cela dans le panel sur sa collection de
    controls ?)

    Cdt.

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

Discussions similaires

  1. Ouvrir un ContextMenuStrip avec un click gauche
    Par Chacha35 dans le forum Windows Forms
    Réponses: 13
    Dernier message: 30/03/2010, 12h56
  2. Alternative au déploiement avec Click-once
    Par vladvad dans le forum Visual Studio
    Réponses: 3
    Dernier message: 08/03/2007, 01h14
  3. simuler le click gauche de la souris
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/12/2006, 20h55
  4. selection image avec click
    Par Tail dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/11/2006, 10h05
  5. [C#] Contextmenu Click gauche
    Par mbibim63 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/09/2006, 01h45

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