鼠标移动事件,没有像样的例子

本文关键字:移动 事件 鼠标 | 更新日期: 2023-09-27 18:27:42

我无法理解这一点,关于如何为鼠标移动事件设置事件侦听器,没有合适的例子。

我可以找到这样或这样的参考资料,但这并没有真正的帮助。。。

我怎么能做这样的事情:

public event MouseEventHandler(object sender, MouseEventArgs e)
{
     //Manage mouse move event   
     //Get X, Y position of mouse ect...
}

编辑:

我有两个错误:

静态只读字段不能分配给(静态中除外构造函数或变量初始化器)

运算符"+="不能应用于"RoutedEvent"类型的操作数,并且"方法组"

这些错误出现在以下行:Mouse.MouseMoveEvent += mouseEventHandler

public MainWindow()
{
    InitializeComponent();
    Mouse.MouseMoveEvent += mouseEventHandler;
}
public void mouseEventHandler(object sender, MouseEventArgs e)
{
    Point mousePosition = e.GetPosition(this);
}

鼠标移动事件,没有像样的例子

只需将事件处理程序附加到任何UIElementMouseMove事件。

例如,您可以将它添加到代码后面的Window中,如下所示:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.MouseMove += Window_MouseMove;
    }
    private void Window_MouseMove(object sender, MouseEventArgs e)
    {
        Console.WriteLine("Mouse moved");
    }
}

在代码背后的C#中附加事件处理程序的另一种选择是使用XAML设置它,例如,对于上面的窗口,它可以是这样的:

<Window …
    MouseMove="Window_MouseMove">

请注意,您仍然需要在代码后面声明Window_MouseMove方法。

编辑:

如果你正在使用Forms,你可能想使用:

https://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousemove(v=vs.110).aspx

类似:

System.Windows.Forms.MouseMove += MouseEventHandler

请记住,您需要一个Forms实例,并直接使用它,如:

this.MouseMove += MouseEventHandler

由于构造函数中有InitializeComponent()函数,我猜您正在使用visual studio 中的设计器使用Winforms

除了其他人给出的正确答案外,我想向你指出,在视觉工作室订阅活动对设计师来说真的很容易。

设计器是绘制表单、添加所有按钮、文本框等的部分。

要为鼠标移动(或表单中任何组件可能引发的任何事件)添加事件处理程序,请执行以下操作:

  • 选择应该对移动做出反应的组件,例如按钮或您正在设计的窗体
  • 转到该组件的属性窗口(如何做到这一点有很多可能性,其中之一是通过菜单视图-属性
  • 在属性窗口中,您可以看到一个闪电标志。如果您单击它,您将看到组件可以生成的大多数事件的列表
  • 其中一个事件是鼠标移动。键入函数名称,或双击事件以生成默认名称
  • 使用所有正确的参数生成事件处理程序,并显示事件处理程序的代码