VS程式設計,WPF中響應鍵盤事件、檢測鍵盤鍵是否按下的一種方法
阿新 • • 發佈:2018-12-09
鍵盤事件有四個,PreviewKeyDown、PreviewKeyUp、KeyDown、KeyUp,
在事件中,對引數e的Key屬性進行判定。
這裡以一個TextBox的文字控制元件為例。檢測到回車鍵給予提示。
1、在鍵盤事件中,檢測單個按鍵
1、前臺增加文字控制元件並增加鍵盤事件
2、後臺的鍵盤擡起事件中加入
if (e.Key == Key.Enter)
{
MessageBox.Show("檢測到回車鍵已按下");
}
像這樣:
同理,如果響應其它的鍵盤按鍵,在Key後面點 . 選擇其它的鍵值。
2、在鍵盤事件中,響應組合鍵盤(兩個或者兩個以上)
這裡以Ctrl + S為例
- 前臺定義鍵盤事件
- 後臺在事件中加入程式碼
有兩種寫法:
第一種:
1、同時按下了Ctrl + S鍵
2、修飾鍵只能按下Ctrl,如果還同時按下了其他修飾鍵,則不會進入
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control && e.Key == Key.S) { MessageBox.Show("檢測到Ctrl、S已按下"); }
第二種:
1、同時按下了Ctrl + S鍵
2、修飾鍵只要按下Ctrl,不管是否還同時按下了其他修飾鍵,都會進入
if (e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Control) && e.Key == Key.H)
{
MessageBox.Show("檢測到Ctrl、S已按下");
}
其中 ModifierKeys.Control後面的Control可換成其它四個
3、在非鍵盤事件中(也可在鍵盤事件中),檢測單個或者多個鍵盤值
利用Keyboard類的靜態方法IsKeyDown,完全脫離事件引數e,來檢測判、斷鍵盤按鍵
這種方式可以在任何事件中去檢測多個組合按鍵或者單個按鍵。
if (Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.LeftShift ) && Keyboard.IsKeyDown(Key.S))
{
//只要當下同時按下的鍵中包含LeftCtrl、LeftShift 和S ,就會進入
}
4、對於具有開關性質的按鍵,比如大小寫、數字鍵盤等鍵值狀態判定
這裡以數字鍵盤是否開啟為例:
if (KeyStates.Toggled == Keyboard.GetKeyStates(Key.NumLock))
{
}
判定左邊為一個具體的狀態,包括按下(Down)、開啟(Toggled)、未開啟(None)三種狀態
判定的右邊為要檢測的鍵值