KeyEventArgs.systemKey
和KeyEventArgs.Key
之间有什么区别?在WPF Usercontrol类中捕获按键事件是否正常,如下所示。
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if(e.SystemKey == Key.LeftAlt || e.SystemKey == Key.LeftCtrl || e.SystemKey == Key.RightAlt)
{
this.Focus();
CloseAnyOpenPopups();
}
}
由于
答案 0 :(得分:6)
因为系统使用e.SystemKey
处理Alt键是唯一可能找出Alt是否被按下的可能性。属性Key
只会返回Key.System
。
为确保您始终获得正确的密钥,您可以使用以下表达式:
Key key = (e.Key == Key.System ? e.SystemKey : e.Key);