9

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

谢谢

4

1 回答 1

7

因为 Alt 键将由系统处理,e.SystemKey所以唯一的可能是找出 Alt 是否被按下。该属性Key将返回Key.System

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

Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
于 2013-05-21T11:36:48.957 回答