鼠标事件处理程序

时间:2012-08-07 23:07:15

标签: c# mouseevent mouseleave

此程序的目的是允许用户通过在屏幕上选择它们来点亮面板上的多个LED。我有一系列按钮,当前用户必须单独点击所有按钮。该阵列可容纳1536个LED,即点击量很多。我希望用户能够按住鼠标按钮并点亮它们交叉的任何LED。我想说的是:

buttonArray[row, column].MouseLeave += new System.Windows.Forms.MouseEventHandler(ClickButton);

然后有一个例程:

private void ClickButton(Object sender, System.Windows.Forms.MouseEventArgs e)
{
   if (e.Button==MouseButtons.Left) 
   {
      //blah blah
   }
}

只要用户鼠标翻过按钮,就会触发,然后我会检查他们是否按住了按钮。现在我收到这个错误:

  

错误1无法隐式转换类型   'System.Windows.Forms.MouseEventHandler'到'System.EventHandler'。

似乎我没有委托和处理程序的正确匹配,或者我不理解命名空间的东西......有点新的C#。我已经在MSDN上偶然发现了一段时间,并且发现了很多看起来像我的工作的例子。

2 个答案:

答案 0 :(得分:0)

问题有一种类型。 Click事件传递到System.EventArgs。要使用System.MouseEventArgs,您需要绑定到MouseClick事件。

在这种情况下我要做的是创建一个MouseDown处理程序,它设置一个私有的布尔标志来表示鼠标是True,还有一个MouseUp处理程序将它设置回False。然后,您将使用MouseEnter处理程序并检查该标志是否已设置,如果已设置,则切换或设置表单上LED表示的状态。然后,您可以将所有这些绑定到这三个处理程序,它应该允许您在进入控制空间时判断鼠标是否已关闭。

编辑:要编辑这个,因为我放在一起的例子不像我想象的那样工作。去图。

答案 1 :(得分:0)

这里只是一个注释:

如果您无法使签名与尝试绑定的ui事件匹配,则可以使用Visual Studio设计器来确定外观。

为此,创建一个按钮,然后按alt + enter以查看属性。 然后,您可以通过单击小闪电图标来查看事件,然后双击一个事件(例如MouseLeave)以使Visual Studio为您填写事件接线。

MouseLeave wiring

然后您可以将此代码用作以后要使用的事件类型的参考。