在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”要验证测试,但不会对按钮产生影响,我需要鼠标右键单击按钮,而不是复选框我需要鼠标右键单击按钮。显然,此事件中编写的任何代码都将仅通过鼠标右键单击执行。我尝试右键单击,它会写“右键”,但该按钮在生效时无法单击(我的意思是,当我点击鼠标右键时,该按钮未被单击)如果按钮单击或不单击有什么关系?按钮从不使用鼠标右键单击。它只使用鼠标左键单击。您在单击事件中编写的任何代码都始终仅通过鼠标左键单击执行。如果您想通过鼠标右键单击按钮执行某些代码,请通过这种方式执行,否则无法执行。我尝试了鼠标上的所有事件,但我想只有鼠标的左键可以执行这个按钮,但理论上这是可能的。我知道我想做一件不是经典的事情,但我想做