本文以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是冒泡路由类型,方向是从子到父。