C # Правый щелчок мышью на кнопке не вызывает событие щелчка мышью - PullRequest
5 голосов
/ 18 ноября 2011

У меня есть кнопка в форме, и я хочу обрабатывать как левый, так и правый клики.

Я обрабатываю событие MouseClick, но оно вызывается только при щелчке левой кнопкой мыши.

Это проблема где-то в моем коде (настройка, которую я пропустил) или предполагаемая функциональность?

Если это невозможно исправить, то какой лучший обходной путь - для обработки события MouseUp?

Причина, по которой я хотел бы использовать MouseClick, заключается в том, что двойные щелчки автоматически распознаются.

Спасибо за любые отзывы.

Ответы [ 3 ]

10 голосов
/ 24 июня 2013

Используйте MouseUp !!

    private void button6_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            MessageBox.Show("LEFT");
        }
        if (e.Button == System.Windows.Forms.MouseButtons.Right)
        {
            MessageBox.Show("RIGHT");
        }
    }
5 голосов
/ 18 ноября 2011

Трудно ответить без кода, но в целом это должно работать.

 private void Form1_MouseClick(object sender, MouseEventArgs e)
{
  if (e.Button == System.Windows.Forms.MouseButtons.Left)
  {
    MessageBox.Show("LEFT");
  }
  if (e.Button == System.Windows.Forms.MouseButtons.Right)
  {
    MessageBox.Show("RIGHT");
  }
}

// EventHandler

 this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseClick);

Редактировать: существует событие MouseDoubleClick, которое вы можете использовать для распознавания двойных щелчков. Работает как для левой, так и для правой кнопки.

4 голосов
/ 23 ноября 2011

Видимо, ответ на этот вопрос заключается в том, что OnClick не обрабатывает события щелчка правой кнопкой мыши в течение Button с.Поэтому было решено использовать MouseUp / MouseDown и проверять наличие двойных щелчков / щелчков, когда мышь перемещается вкл / выкл на половину вручную.

...