Comment puis-je déterminer quel bouton de la souris a déclenché l'événement de clic dans WPF?

StackOverflow https://stackoverflow.com/questions/977329

  •  13-09-2019
  •  | 
  •  

Question

J'ai un bouton que je déclenche OnClick chaque fois qu'il ya un clic sur ce bouton. Je voudrais savoir quel bouton de la souris cliqué sur ce bouton?

Lorsque j'utilise le Mouse.LeftButton ou Mouse.RightButton, les deux me dire " realsed " qui est leur état après le clic.

Je veux juste savoir que l'on a cliqué sur mon bouton. Si je change EventArgs à MouseEventArgs, je reçois des erreurs.

XAML: <Button Name="myButton" Click="OnClick">

private void OnClick(object sender, EventArgs e)
{
//do certain thing. 
}
Était-ce utile?

La solution

Si vous êtes juste en utilisant l'événement Click du bouton, le seul bouton de la souris qui se déclenche, il est le bouton principal de la souris.

Si vous avez besoin de savoir précisément si elle était le bouton gauche ou à droite, vous pouvez utiliser le SystemInformation pour l'obtenir.

void OnClick(object sender, RoutedEventArgs e)
    {
        if (SystemParameters.SwapButtons) // Or use SystemInformation.MouseButtonsSwapped
        {
            // It's the right button.
        }
        else
        {
            // It's the standard left button.
        }
    }

Modifier L'équivalent WPF à SystemInformation est SystemParameters, qui peuvent être utilisés à la place. Bien que vous pouvez inclure System.Windows.Forms comme référence pour obtenir le SystemInformation sans affecter négativement l'application de quelque façon.

Autres conseils

Vous pouvez jeter comme ci-dessous:

MouseEventArgs myArgs = (MouseEventArgs) e;

Et puis obtenir les informations avec:

if (myArgs.Button == System.Windows.Forms.MouseButtons.Left)
{
    // do sth
}

La solution fonctionne en VS2013 et vous ne devez pas utiliser l'événement MouseClick plus;)

Vous avez raison, Jose, il est avec l'événement MouseClick. Mais vous devez ajouter un petit délégué:

this.button1.MouseDown + = new System.Windows.Forms.MouseEventHandler (this.MyMouseDouwn);

Et utiliser cette méthode dans votre formulaire:

    private void MyMouseDouwn(object sender, MouseEventArgs e) 
    {
        if (e.Button == MouseButtons.Right)
           this.Text = "Right";

        if (e.Button == MouseButtons.Left)
            this.Text = "Left";
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top