Dan*_*nny 25 c# event-handling visual-studio-2012
我有一种方法来检测visual studio通过双击表单所做的左键单击事件.
private void pictureBox1_Click(object sender, EventArgs e)
{
MessageBox.Show("Left click");
}
Run Code Online (Sandbox Code Playgroud)
我希望通过右键单击同一个对象来进行右键单击事件.
我在网上看到你可以使用这个开关:
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");}
}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,当我这样做时,e.Button有一条红线和错误:
"'System.EventArgs' does not contain a definition for 'Button'... "
Run Code Online (Sandbox Code Playgroud)
所以我通过将"EventArgs e"更改为"MouseEventArgs e"来解决此问题.
但是Form1Designer中出现了一个新错误,其中事件行是:
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
Run Code Online (Sandbox Code Playgroud)
错误说:
"No overload for 'pictureBox1_Click' matches delegate 'System.EventHandler' "
Run Code Online (Sandbox Code Playgroud)
我该如何解决?谢谢阅读
Sri*_*vel 37
您应该在click
事件处理程序中引入一个强制转换
MouseEventArgs me = (MouseEventArgs) e;
Run Code Online (Sandbox Code Playgroud)
Cod*_*der 22
您需要MouseClick
代替Click
事件处理程序,引用.
switch (e.Button) {
case MouseButtons.Left:
// Left click
break;
case MouseButtons.Right:
// Right click
break;
...
}
Run Code Online (Sandbox Code Playgroud)
Thu*_*rGr 16
对我来说,MouseClick或Click事件都不起作用,因为当您右键单击时,不会调用事件.快速的方法是:
private void button1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//do something here
}
else//left or middle click
{
//do something here
}
}
Run Code Online (Sandbox Code Playgroud)
您可以修改它以完全根据参数的值进行操作.
警告:只有一个捕获只使用鼠标按下事件.如果你在控件上mousedown然后你将光标移出控件以释放它,你仍然会触发事件.为了避免这种情况,您还应确保在事件处理程序的控件中出现鼠标.在检查按钮之前检查鼠标光标坐标是否在控件的矩形内,将正确执行.
归档时间: |
|
查看次数: |
117005 次 |
最近记录: |