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