C#右键单击按钮不会引发鼠标单击事件

问题描述 投票:5回答:4

我在表单上有一个按钮,想同时处理左键和右键单击。

我正在处理MouseClick事件,但这仅在单击鼠标左键时引发。

这是我的代码中某个地方的问题(我错过的设置)还是预期的功能?

如果无法解决,最好的解决方法是-处理MouseUp事件?

我想使用MouseClick的原因是可以自动识别双击。

感谢您的反馈。

c# winforms button mouseclick-event
4个回答
12
投票

使用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
投票

没有代码很难回答,但总的来说应该可以。

 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事件,您可能想使用它来识别双击。对左右musebutton都起作用。


4
投票

显然,答案是OnClick不处理Button的右键单击事件。因此,解决方案是使用MouseUp / MouseDown并检查双击/手动单击鼠标在中途移动的位置。


0
投票

private void Formbutton_MouseClick(对象发送者,MouseEventArgs e){

        if (e.Button == MouseButtons.Right)
        {
            MessageBox.Show("Right");
        }

        else if(e.Button==MouseButtons.Left)
        {
            MessageBox.Show("Left");
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.