Как определить, какая кнопка мыши вызвала событие нажатия в WPF? - PullRequest
2 голосов
/ 10 июня 2009

У меня есть кнопка, которую я нажимаю OnClick всякий раз, когда на нее нажимают. Я хотел бы знать, какая кнопка мыши нажала на эту кнопку?

Когда я использую Mouse.LeftButton или Mouse.RightButton, оба говорят мне " realsed ", что является их состояниями после щелчка.

Я просто хочу знать, какой из них нажал на мою кнопку. Если я изменю EventArgs на MouseEventArgs, я получаю ошибки.

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

private void OnClick(object sender, EventArgs e)
{
//do certain thing. 
}

Ответы [ 3 ]

4 голосов
/ 18 сентября 2014

Вы можете разыграть как ниже:

MouseEventArgs myArgs = (MouseEventArgs) e;

А затем получить информацию с помощью:

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

Решение работает в VS2013, и вам больше не нужно использовать событие MouseClick;)

2 голосов
/ 11 июня 2009

Если вы просто используете событие Click кнопки, то единственная кнопка мыши, которая будет вызывать ее, - это основная кнопка мыши.

Если вам все еще нужно точно знать, была ли это левая или правая кнопка, вы можете использовать SystemInformation для ее получения.

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.
        }
    }

Редактировать: WPF-эквивалентом SystemInformation является SystemParameters, который можно использовать вместо этого. Хотя вы можете включить System.Windows.Forms в качестве ссылки для получения SystemInformation, не оказывая негативного влияния на приложение.

0 голосов
/ 10 июня 2009

Ты прав, Хосе, это событие MouseClick. Но вы должны добавить небольшого делегата:

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

И используйте этот метод в вашей форме:

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

        if (e.Button == MouseButtons.Left)
            this.Text = "Left";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...