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 Presentation Foundation Discussion :

Evènement sur molette souris enfoncée


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 18
    Points
    18
    Par défaut Evènement sur molette souris enfoncée
    Bonjour,

    Je souhaite capturer l'évènement déclenché lors de l'appui sur la molette de la souris, en plus du défilement de la roulette (problème apparemment simple).

    Pour le défilement, rien de très compliqué, j'ai utilisé "MouseWheel", en revanche pour le clic sur la molette, je bloque.

    J'ai essayé ceci qui est censé fonctionner.
    Dans ce cas, la méthode est bien déclenchée lors de l'appui sur le bouton, mais la property "MiddleButton" n'est pas à la valeur "Pressed".
    Je suis donc incapable de différencier l'appui sur la molette d'un défilement de cette même molette.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Private Sub MainWindow_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Input.MouseWheelEventArgs) Handles Me.MouseWheel
            If e.MiddleButton = MouseButtonState.Pressed Then
                ...
            End If
        End Sub
    J'ai donc recherché une seconde solution sur le net et msdn notamment, et j'ai testé ça qui ne fonctionne pas mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Private Sub MainWindow_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles Me.MouseDown
            If e.MiddleButton = MouseButtonState.Pressed Then
                ...
            End If
        End Sub
    Là l'évènement n'est même pas capturé alors que celà fonctionne à merveille lorsque je teste la même chose avec les boutons gauche et droite.

    Donc je suis toujours bloqué pour capter cet évènement.

    Je vous remercie par avance pour vos réponses, cordialement.

    Furior

  2. #2
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Salut,

    Il faut utiliser l'évènement MouseDown car cela se produit sur le clic d'un bouton, donc n'importe lequel (gauche, droite, milieu).

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Window_MouseDown(sender As Object, e As MouseButtonEventArgs)
    	If Mouse.MiddleButton = MouseButtonState.Pressed Then
    		MessageBox.Show("Bouton du milieu appuyé")
    	End If
    End Sub

    Ce code marche très bien chez moi...

    EDIT : essayes en déclarant l'évènement dans le xaml:
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    MouseDown="Window_MouseDown"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Tout d'abord, merci beaucoup pour ta réponse Yonpo.

    J'ai continué à chercher sur le net et je suis tombé sur le topic d'un forum anglais avec une autre personne qui avait un problème similaire.
    Dans ces messages la personne disait être en possession d'une souris Logitech tout comme moi.

    Je suis donc allé voir dans les réglages du driver et en effet, cela est dû au driver logitech qui change par défaut le comportement du clic molette sur "zoom".

    J'avais effectivement un doute là dessus car une icône en forme de loupe apparaissait au dessus du curseur de ma souris à chaque clic de la molette et ce quelle que soit l'application ayant le focus (même sur mon bureau Windows).

    En fait le passage en mode "zoom" lors du clic déclenchait l'évènement "MouseWheel" lié au défilement de la molette (logique puisque le clic était vu comme un déclenchement de défilement).

    J'ai donc modifié les paramètres du driver pour que le clic sur la molette de la souris garde son comportement par défaut.
    Désormais l'évènement MouseDown se déclenche correctement lors d'un clic sur molette.

    Je te remercie encore une fois pour ton aide et passe en résolu.

    Cordialement.

    Furior

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

Discussions similaires

  1. Evénement molette souris dans listbox
    Par Matmal11 dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 04/05/2010, 09h41
  2. Molette souris sur Combobox DroppedDown
    Par mico2 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/03/2010, 22h06
  3. [AC-2007] Evénement sur clic et Sur sourie appuyée ou relâchée
    Par miamou dans le forum IHM
    Réponses: 3
    Dernier message: 11/12/2009, 13h36
  4. Evènement sur coup de molette
    Par timotep dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/04/2007, 11h17
  5. Nouvelles sur la desactivation de la molette souris?
    Par marie10 dans le forum Access
    Réponses: 8
    Dernier message: 24/02/2006, 12h21

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