该程序的目的是允许用户通过在屏幕上选择它们来点亮面板上的多个 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
}
}
这将在用户鼠标经过按钮时触发,然后我将检查他们是否按住了按钮。现在我收到这个错误:
Error 1 Cannot implicitly convert type 'System.Windows.Forms.MouseEventHandler' to 'System.EventHandler'.
似乎我没有正确匹配委托(delegate)和处理程序,或者我不理解命名空间的东西……对 C# 有点陌生。我已经在 MSDN 上偶然发现了一段时间,并且发现了很多看起来就像我的一样有效的例子。
最佳答案
问题是其中一种类型。 Click 事件传入 System.EventArgs
。要使用 System.MouseEventArgs
,您需要绑定(bind)到 MouseClick 事件。
在这种情况下,我会做的是创建一个 MouseDown 处理程序,它设置一个私有(private) bool 标志,表示鼠标已按下到 True
,并创建一个 MouseUp 处理程序,将其设置回 错误
。然后,您将使用 MouseEnter 处理程序并检查标志是否已设置,如果已设置,则切换或设置窗体上 LED 表示的状态。然后您可以将所有这些绑定(bind)到这三个处理程序,它应该允许您在进入控制空间时判断鼠标是否按下。
编辑:要编辑这个,因为我放在一起的例子并不像我想象的那样有效。去图吧。
关于c# - 鼠标事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11855375/