无法理解这一点,关于如何为鼠标移动事件设置事件监听器没有合适的例子。
我可以找到this和this之类的引用,但这并没有真正帮助......
我该怎么做:
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);
}
答案 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)
只需将事件处理程序附加到任何MouseMove
的UIElement
事件。
例如,您可以将其添加到代码隐藏中的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
除了其他人提供的正确答案之外,我想向您指出,在设计师中订阅视觉工作室中的活动非常容易。
设计师是您绘制表单,添加所有按钮,文本框等的部分。
要为鼠标移动添加事件处理程序(或者对于表单中任何组件可能引发的任何事件),请执行以下操作: