TextBox处理关键事件并且不会传递它们

时间:2017-01-03 17:52:00

标签: c# keyboard uwp keyboard-events

我有一个带有一些全局按键操作的uwp应用程序。我通过订阅两组不同的事件来做到这一点:

CoreWindow.CharacterReceived (for text keypresses), and
MainPage.KeyDown (for escape, arrow keys, enter, etc.)

但我的应用程序也有一些TextBoxes。当其中一个有焦点时,我想在几乎所有情况下禁用上述内容。 (箭头键和制表符有时是例外)。

我当然可以通过在TextBox包装器对象中覆盖OnGotFocus和OnLostFocus并跟踪TextBox当前是否具有焦点来实现这一点。

有更好的方法吗?

编辑:我找到了FocusManager.GetFocusedElement()。这是一种改进,但仍然感觉不理想。

1 个答案:

答案 0 :(得分:0)

也许您可以使用FocusManager.GetFocusedElement()并检查返回的元素是否为TextBox类型。因此,您应该向CoreWindow.CharacterReceivedMainPage.KeyDown事件处理程序添加以下内容:

EventHandler(parameters)
{
    if (FocusManager.GetFocusedElement() is TextBox)
    {
        return;
    }

    // event handling
}