WPF中更改键盘默认指令小结

在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)
{
//无效
}
并且此时用e.SystemKey == Key.Return也无法截取回车(不明原因,请指教)。

原文地址:https://www.cnblogs.com/Laro/p/1958628.html