键事件不能通过箭头键激活

本文关键字:激活 事件 不能 | 更新日期: 2023-09-27 18:18:22

首先,我正在使用WPF,我是新手。

我在xaml:

中添加了一个KeyDownEvent到内容控件
 <ContentControl Grid.Row="1" Name="dockingContentControl" KeyDown="dockingContentControl_KeyDown"/>
我知道,可能有更好的方法来添加KeyDown事件。(也会有帮助)

但是事件正在工作。所以我使用了一个简单的Console.WriteLine命令,像这样:

private void dockingContentControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    Console.WriteLine(e.Key);
}

显示我按下的按钮。

但是不知道为什么它没有触发箭头键。

我不知道为什么所有其他(我想所有,没有测试所有)按钮都工作,但箭头键没有。

是我遗漏了什么还是我必须添加一些额外的代码?

推荐:所有其他按钮被识别,除了fn -按钮。背景图表在移动,可能是图表有焦点而没有"向前"输入?

键事件不能通过箭头键激活

这取决于你在ContentControl中放置了什么控件以及哪个控件有焦点。一些键,如TAB、RETURN、ESC和箭头键,通常被某些控件忽略,因为它们不被视为输入键。方向键被认为是导航键,按下这些键通常不会升高KeyDown(对于按钮来说是一个例子)

在这种情况下你可以尝试使用PreviewKeyDown-Event。

如果我在一个最小的解决方案中使用你提供的代码,我收到所有键的KeyDown-Events,但它是必需的ContentControl有焦点。

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        dockingContentControl.Focus();
    }
    private void dockingContentControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        Console.WriteLine(e.Key);
    }
}