MouseMove事件,没有像样的例子

时间:2015-12-22 15:48:22

标签: c# wpf

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

我可以找到thisthis之类的引用,但这并没有真正帮助......

我该怎么做:

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);
}

3 个答案:

答案 0 :(得分:2)

编辑:

如果您使用的是表单,则可能需要使用:

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

答案 1 :(得分:2)

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

例如,您可以将其添加到代码隐藏中的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方法。

答案 2 :(得分:1)

由于构造函数中的InitializeComponent()函数,我猜你使用Visual Studio中的设计器使用Winforms

除了其他人提供的正确答案之外,我想向您指出,在设计师中订阅视觉工作室中的活动非常容易。

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

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

  • 选择应对您的移动进行反应的组件,例如按钮或您正在设计的表单
  • 转到此组件的属性窗口(有很多可能性如何执行此操作,其中一个是通过菜单视图 - 属性
  • 在属性窗口中,您会看到一个闪电符号。如果单击它,则会看到组件可以生成的大多数事件的列表
  • 其中一个事件是mousemove。键入函数名称,或双击事件以生成默认名称。
  • 使用所有正确的参数生成事件处理程序,并显示事件处理程序的代码