我有ListView
个KeyDown
事件处理程序:
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
调用。
答案 0 :(得分:1)
它无效,因为ListBox
控件已经处理了特殊组合。
使用PreviewKeyDown
似乎可行。
通过设置e.Handled = true;