>我有一种方法可以通过双击表单来检测视觉工作室所做的左键单击事件。
private void pictureBox1_Click(object sender, EventArgs e)
{
MessageBox.Show("Left click");
}
我想通过右键单击同一对象来获得右键单击事件。
我在网上读到您可以使用此开关:
private void pictureBox1_Click(object sender, EventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right){MessageBox.Show("Right click");}
if (e.Button == System.Windows.Forms.MouseButtons.Left){MessageBox.Show("Left click");}
}
问题是,当我e.Button
它时会产生错误错误:
System.EventArgs
不包含Button
的定义...
所以我通过将EventArgs.e
更改为MouseEventArgs.e
来解决此问题
但是,Form1Designer 中出现了一个新错误,其中事件行为:
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
错误说:
pictureBox1_Click
匹配委托System.EventHandler
没有过载
我该如何解决这个问题?感谢您的阅读
您应该在 click
事件处理程序中引入强制转换
MouseEventArgs me = (MouseEventArgs) e;
您需要MouseClick
而不是Click
事件处理程序,引用。
switch (e.Button) {
case MouseButtons.Left:
// Left click
break;
case MouseButtons.Right:
// Right click
break;
...
}
鼠标单击或单击事件都不起作用,因为简单地说,当您右键单击时不会调用这些事件。快速的方法是:
private void button1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//do something here
}
else//left or middle click
{
//do something here
}
}
您可以修改它以完全按照参数的值执行所需的操作。
警告:仅使用鼠标向上事件会有一个问题。 如果将鼠标悬停在控件上,然后将光标移出控件以释放它,则仍会触发事件。为了避免这种情况,还应确保鼠标向上发生在事件处理程序的控件内。在检查按钮之前检查鼠标光标坐标是否在控件的矩形内将正确执行此操作。
使用 MouseDown 事件
if(e.Button == MouseButton.Right)
使用 MouseClick 事件而不是单击
这肯定会帮助很多人!
private void axWindowsMediaPlayer1_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e)
{
if(e.nButton==2)
{
contextMenuStrip1.Show(MousePosition);
}
}
[ e.nbutton==2 ] 就像[ e.button==鼠标按钮.right ]
这段代码是真的:
MouseEventArgs me = (MouseEventArgs)e;
if (me.Button == MouseButtons.Right)
//Right Click
else
//Left Click