本文以Canvas为例,介绍一下在C#中获取鼠标和键盘事件的方法。使用这些事件前,需要添加引用using System.Windows.Input。
1. MouseDown
Canvas canvas = new Canvas(); canvas.MouseDown += new MouseEventHandler(canvas_MouseMove); private void canvas_MouseMove(object sender, MouseEventArgs e) { if(e.LeftButton == MouseButtonState.Pressed) { //事件处理 } }
2. KeyDown
由于Canvas 无法像TextBox那样捕捉键盘输入,所以对Canvas添加KeyDown事件后发现无法触发,但鼠标事件可以。要解决这个问题,可将事件处理放在上层窗体的键盘事件中。
var window = Window.GetWindow(this); window.KeyDown += new KeyEventHandler(window_keyDown); private void window_keyDown(object sender, KeyEventArgs e)
{ //事件处理 }
3. PreviewKeyDown
与KeyDown的区别:
PreviewKeyDown是隧道路由类型,方向是从父到子。
KeyDown是冒泡路由类型,方向是从子到父。