在System.Windows.Input 里有着所有键的集合,经测试要注意以下几点(纯实践所得经验,还请高手指明下面不明白地方的原因):
1. 普通情况下Key就够用了
2. 当某个键在特定的环境下充当某种系统默认的功能时就要用到SystemKey,如Alt键在窗口中默认是激活菜单,这时用Key来判断就不起作用了。
如下例作示,在textBox1中按右Alt键将还是激活菜单,而左Alt键盘却实现了换行的功能。
private void textBox1_KeyDown( object sender, KeyEventArgs e) { if (e.SystemKey == Key.LeftAlt || e.Key == Key.RightAlt) { // 添加一个换行字符 textBox1.SelectedText = Environment.NewLine; // 光标向前移动一位 textBox1.Select(textBox1.SelectionStart + 1 , 0 ); e.Handled = true ; } }
3.组合键的使用,首先,组合键的实现是使用系统默认功能,所以必须用SystemKey,然后需要用到Keyboard.Modifiers,如:Alt+F
if (Keyboard.Modifiers == ModifierKeys.Alt && e.SystemKey == Key.F) // do some work
4. 在支持换行的控件中(如TextBox开启AcceptsReturn="True"时)回车键变成了换行功能,而Ctrl+回车键才是默认的回车功能,注意这时虽然是组合键,但只有用Key才有效(不明原因,请指教):
if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.Enter){ // 成功截取CTRL+ENTER } if (Keyboard.Modifiers == ModifierKeys.Control && e.SystemKey == Key.Enter){ // 无效 }