C#: 鼠标和键盘的输入事件

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

原文地址:https://www.cnblogs.com/xpvincent/p/2946716.html