为什么我的WPF KeyDown处理程序没有捕获CTRL + A?

时间:2018-06-17 09:57:31

标签: wpf keyboard keydown

我有ListViewKeyDown事件处理程序:

private void ListViewOnKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.A)
    {
        Debug.WriteLine("KeyDown is A");
        if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
        {
            ListViewHelper.SelectAll((ListView)sender);
        }
    }
}

然而Debug.WriteLine只被调用,即我在输出窗口中看到KeyDown is A ,如果我只按键A。如果我按CTRL,则会调用该事件,但e.Key显示为LeftCtrl(使用断点),并按住CTRL并按A,未调用Debug.WriteLine。使用断点进行调试表明,当我按住CTRL时,处理程序只会被LeftCtrl调用。

1 个答案:

答案 0 :(得分:1)

它无效,因为ListBox控件已经处理了特殊组合。

使用PreviewKeyDown似乎可行。 通过设置e.Handled = true;

来注意