我有一个方法来检测visual studio通过双击窗体产生的左键单击事件。
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
我该如何解决此问题?感谢您的阅读
7条答案
按热度按时间lvmkulzt1#
您应该在
click
事件处理程序中引入强制转换des4xlb02#
您需要
MouseClick
而不是Click
事件处理程序reference。qc6wkl3g3#
对我来说,MouseClick或Click事件都不起作用,因为当你右击时,这些事件不会被调用。快速的方法是:
你可以根据参数的值来修改它。
**提示:**仅使用鼠标抬起事件时有一个catch。如果你鼠标按下控件,然后 * 你将光标移出控件释放它 *,你仍然会触发事件。为了避免这种情况,您还应该确保鼠标抬起发生在事件处理程序中的控件内。在检查按钮之前检查鼠标光标坐标是否在控件的矩形内将正确执行此操作。
jum4pzuy4#
使用MouseDown事件
kx1ctssn5#
使用MouseClick事件而不是Click
bhmjp9jg6#
这肯定会帮助很多人!
[e.nbutton==2] 就像 [e.button==鼠标右键]
ni65a41a7#
这段代码是真的: