我正在开发在Raspberry Pi 3和Windows 10 IoT Core 10.0.16299.125上运行的应用程序。作为其中的一部分,我创建了类派生形式UserControl。它由两个TextBoxes组成。所述控件需要在焦点处理时自己处理键盘输入。我需要的是数字键,+, - ,*,/和功能键。除了F12之外,我得到了所有需要的键来使用OnKeyDown事件。 例如,Grid上将存在该类型的多个控件。
我已经尝试为整个类订阅KeyDown / Up并在其中输入文本框并覆盖OnKeyDown / Up但问题在所有情况下都是相同的,我无法捕获F12键。有趣的是,只要我的控件具有焦点,我就会捕获整个页面的关键事件,F12不会触发事件,否则它会起作用。
我也试过了
Window.Current.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived;
private void CoreWindow_CharacterReceived(CoreWindow sender, CharacterReceivedEventArgs args)
{
Debug.WriteLine("Key pressed: " + args.KeyCode);
...
}
但是根本没有得到功能键。 UWP中不存在ProcessCmdKey。还有很多其他针对WinForms的解决方案。 在我看来,TextBox以某种方式阻止F12键,但到目前为止我无法找到答案为什么或如何。
经过一些额外的搜索和测试后
Window.Current.CoreWindow.KeyUp += ...
不起作用,但
KeyboardDeliveryInterceptor
有点作品。当我的控件具有焦点时,我可以捕获F12键,但是这样键会从正常处理路径中退出并且TextBox输入被阻止。所以我正在寻找一种方法让钥匙重新上路。