3

您好我正在制作一个 Windows 窗体应用程序我在该应用程序中添加了一个用户控件有没有办法禁用右键单击事件。因为如果我使用

Button.click += SomeMethod

在(左和右)点击的情况下,它将转到 someMethod 。我只想在左键单击的情况下执行此操作。

4

4 回答 4

3

您不能处理在事件中单击了哪个按钮吗?

private void uc_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
         //more logic here
    }
}
于 2013-06-04T07:05:54.853 回答
2

你可以做多种方式;

1)如果您想使用您的 button.click 事件,请执行以下代码:

Button.Click += SomeMethod;
private void SomeMethod(object sender, EventArgs e)
{
    System.Windows.Forms.Button bt = sender as System.Windows.Forms.Button;

     if (bt != null)
     {
        if (bt.Equals(System.Windows.Forms.MouseButtons.Left))
        {
                // do something;
         }
     }
}

2) 或者在窗体“button.MouseClick”中使用鼠标点击事件。

   Button.MouseClick += SomeMethod;
   private void SomeMethod(object sender, MouseEventArgs e)
   {
        if (!e.Button.Equals(System.Windows.Forms.MouseButtons.Right))
        {
            // do work
        }
   }

我希望我们可以使用 e.Handled = true,但在这种情况下,事件参数都没有 Handled 属性,因此您必须手动检查它们。

于 2013-06-04T07:37:04.210 回答
1

您可以检测在事件处理程序中单击了哪个鼠标按钮。

检查处理程序的MouseEventArgs e参数

于 2013-06-04T07:05:08.927 回答
1

对于左键单击的情况,您可以检查按钮并调用本机 onClick。

[伪代码]

SomeMethod(e){
  if (e.Button == left){
    control.onClick(e);
  }
}
于 2013-06-04T07:07:10.340 回答