KeyEventArgs.systemKey和KeyEventArgs.Key之间的区别

时间:2013-05-21 11:24:30

标签: wpf

KeyEventArgs.systemKeyKeyEventArgs.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();
        }
    }

由于

1 个答案:

答案 0 :(得分:6)

因为系统使用e.SystemKey处理Alt键是唯一可能找出Alt是否被按下的可能性。属性Key只会返回Key.System

为确保您始终获得正确的密钥,您可以使用以下表达式:

Key key = (e.Key == Key.System ? e.SystemKey : e.Key);