我有一个带有以下KeyDown
事件处理程序的ListView
:
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
只被调用,即如果我只按A
键,我在输出窗口中看到KeyDown is A
。如果我按CTRL
,则会调用该事件,但e.Key
显示为LeftCtrl
(使用断点(,并按住CTRL
并按A
,则不会调用该Debug.WriteLine
。使用断点进行调试表明,当我按住CTRL
时,处理程序仅针对LeftCtrl
不断被调用。
它不起作用,因为特殊组合已经由ListBox
控件处理。
相反,使用PreviewKeyDown
似乎有效。 通过设置e.Handled = true;
来注意