2

该程序的目的是允许用户通过在屏幕上选择它们来点亮面板上的多个 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 上偶然发现了一段时间,发现很多例子看起来和我的工作一样。

4

2 回答 2

0

那里的问题是一种类型。Click 事件传入System.EventArgs. 要使用System.MouseEventArgs,您需要绑定到 MouseClick 事件。

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

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

于 2012-08-07T23:16:53.760 回答
0

这里只是一个注释:

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

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

鼠标离开接线

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

于 2019-11-17T22:39:33.700 回答