在c#winforms中使用鼠标左键和右键

在c#winforms中使用鼠标左键和右键,c#,winforms,button,mouse,C#,Winforms,Button,Mouse,此功能仅识别鼠标左键。如何使该程序识别鼠标右键,以便用鼠标右键单击该按钮 private void button2_Click(object sender, EventArgs e) { MouseEventArgs me = (MouseEventArgs)e; if (buttonwasclicked==false) { DrawLinesOnBitmap(button2

此功能仅识别鼠标左键。如何使该程序识别鼠标右键,以便用鼠标右键单击该按钮

 private void button2_Click(object sender, EventArgs e)
        {
            MouseEventArgs me = (MouseEventArgs)e;
            if (buttonwasclicked==false)
            {
                DrawLinesOnBitmap(button2.BackgroundImage);
                button2.BackgroundImage= ToGrayscale(button2.BackgroundImage);
                buttonwasclicked = true;
            }

            else {
                button2.BackgroundImageLayout = ImageLayout.Stretch; 
                button2.BackgroundImage = Image.FromFile("C:\\Users\\rati\\Desktop\\ks.png");
                buttonwasclicked = false;
            }
            if (me.Button == MouseButtons.Left)
            {
                mysum += md;
                if (buttonwasclicked == true) md *= -1; else md *= -1;
                label1.Text = mysum.ToString();
            }
            if (me.Button == MouseButtons.Right) {
                enemysum += ed;
                if (buttonwasclicked == true) ed *= -1; else ed *= -1;
                label2.Text = enemysum.ToString();
            }
        }
使用“MouseClick”事件而不是“Click”事件,“Click”无法识别鼠标右键单击


如果您使用的是Visual Studio,只需转到设计器,单击按钮,转到属性,然后单击lightning图标。然后找到“MouseClick”并双击它。

您应该使用
MouseDown
事件。它具有
MouseEventArgs
参数,该参数包含
按钮
属性。因此,您可以检查按钮是否已按下。

您需要同时使用
鼠标向下
鼠标向下
操作来解释单击

您的操作列表应类似于以下内容:

然后将这些动作解释如下:

int prevMouseX;
int prevMouseY;

private void mouseDown(object sender, MouseEventArgs e)
{
    prevMouseX = e.X;
    prevMouseY = e.Y;
}

private void mouseUp(object sender, MouseEventArgs e)
{
    if (prevMouseX == e.X && prevMouseY == e.Y)
        mouseClick(sender, e);
}

private void mouseClick(object sender, MouseEventArgs e)
{
    //Do Stuff
}
那应该对你有用


我的代码将单击解释为鼠标在同一位置上下移动。

如果您想对按钮的右键单击事件执行操作,请尝试此操作

=>创建一个上下文菜单,不要在其中创建任何选项。(从工具箱拖放上下文菜单)

=>从属性面板中按钮的ContextMenuStrip属性将该上下文菜单分配给该按钮

在上下文菜单的打开事件上编写以下代码

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
    {
        MessageBox.Show("hii");
        e.Cancel=true;
    }


看看这个。。您需要了解,当使用鼠标左键时,按钮单击可能会触发。。因此,您需要按照链接中的答案进行操作,而不是使用鼠标点击事件,测试e.button是否更容易使用PreviewMouseDown事件?@Elipzer是的,我只是选中了^ ^。在我的测试用例中没有:(你是否确实将其应用于控件而不是表单本身?是的,我使用了…我使用了带有面板或图片框或其他东西的复选框尝试。编辑:仅使用按钮尝试,但不起作用。我猜它适用于某些控件,但不适用于其他控件:/
MouseDown
与Click不同。当用户放置鼠标屁股时会调用它在向下,而不是当它出现在相同的位置时单击
鼠标单击
我需要用鼠标右键单击该按钮click@RatiSharabidze你应该在
MouseDown
事件中使用
if(e.Button==MouseButtons.Right)
。我做了MouseDown事件,它工作,它写“Right”要验证测试,但不会对按钮产生影响,我需要鼠标右键单击按钮,而不是复选框我需要鼠标右键单击按钮。显然,此事件中编写的任何代码都将仅通过鼠标右键单击执行。我尝试右键单击,它会写“右键”,但该按钮在生效时无法单击(我的意思是,当我点击鼠标右键时,该按钮未被单击)如果按钮单击或不单击有什么关系?按钮从不使用鼠标右键单击。它只使用鼠标左键单击。您在单击事件中编写的任何代码都始终仅通过鼠标左键单击执行。如果您想通过鼠标右键单击按钮执行某些代码,请通过这种方式执行,否则无法执行。我尝试了鼠标上的所有事件,但我想只有鼠标的左键可以执行这个按钮,但理论上这是可能的。我知道我想做一件不是经典的事情,但我想做