键盘事件有四个,PreviewKeyDown、PreviewKeyUp、KeyDown、KeyUp, 在事件中,对参数e的Key属性进行判定。 这里以一个TextBox的文本控件为例。检测到回车键给予提示。
键盘事件有四个,PreviewKeyDown、PreviewKeyUp、KeyDown、KeyUp,
在事件中,对参数e的Key属性进行判定。
这里以一个TextBox的文本控件为例。检测到回车键给予提示。
1、前台增加文本控件并增加键盘事件
2、后台的键盘抬起事件中加入
if (e.Key == Key.Enter) { MessageBox.Show("检测到回车键已按下"); }
像这样:
同理,如果响应其它的键盘按键,在Key后面点 . 选择其它的键值。
这里以Ctrl + S为例
有两种写法:
第一种: 1、同时按下了Ctrl + S键 2、修饰键只能按下Ctrl,如果还同时按下了其他修饰键,则不会进入
1、同时按下了Ctrl + S键
2、修饰键只能按下Ctrl,如果还同时按下了其他修饰键,则不会进入
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control && e.Key == Key.S) { MessageBox.Show("检测到Ctrl、S已按下"); }
第二种: 1、同时按下了Ctrl + S键 2、修饰键只要按下Ctrl,不管是否还同时按下了其他修饰键,都会进入
2、修饰键只要按下Ctrl,不管是否还同时按下了其他修饰键,都会进入
if (e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Control) && e.Key == Key.H) { MessageBox.Show("检测到Ctrl、S已按下"); }
其中 ModifierKeys.Control后面的Control可换成其它四个
利用Keyboard类的静态方法IsKeyDown,完全脱离事件参数e,来检测判、断键盘按键 这种方式可以在任何事件中去检测多个组合按键或者单个按键。
利用Keyboard类的静态方法IsKeyDown,完全脱离事件参数e,来检测判、断键盘按键
这种方式可以在任何事件中去检测多个组合按键或者单个按键。
if (Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.LeftShift ) && Keyboard.IsKeyDown(Key.S)) { //只要当下同时按下的键中包含LeftCtrl、LeftShift 和S ,就会进入 }
这里以数字键盘是否打开为例:
if (KeyStates.Toggled == Keyboard.GetKeyStates(Key.NumLock)) { }
判定左边为一个具体的状态,包括按下(Down)、打开(Toggled)、未打开(None)三种状态
判定的右边为要检测的键值