【发布时间】:2015-09-11 13:33:27
【问题描述】:
我正在尝试捕获任何KeyDown 事件,无论哪个项目具有焦点。我的构造函数中有以下代码:
Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
我的功能在这里:
void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{
//Stuff in here
}
这适用于常规键(箭头、字母),但不接收特殊键的事件(如 Enter 或 Tab)。
如何拦截 Enter 或 Tab 按键的事件并阻止系统处理它?无论焦点是什么对象,我都需要一直获取事件。
【问题讨论】:
-
您可能想要查看 Windows 挂钩。它们对您的目的比尝试捕获系统事件更有用。如果你愿意,我可以找到并发布一些挂钩文档的链接
-
您应该查看有关 key down 的文档,key down 是用于“显示”的键。
-
您也可以尝试处理按键向上和按键以覆盖“海滨”
-
听起来很高级,你正在开发一个键盘记录器(如果这不是实际的预期目的,那就是另一回事了)你可能想搜索如何在 c# 中构建一个键盘记录器作为从哪里开始的基础。正如 rmn36 所说,它需要 windows 钩子来做你想做的事情。
-
您无法从此事件中获取非系统密钥。可怕地未指定,但基本信息是您不能破坏基本的键盘使用。只有当您的 UI 具有少于 2 个可聚焦控件时,您才会获得 Tab。只有当焦点不在使用它的控件上时,您才会得到 Enter,例如 Button。我的水晶球说您正在寻找 CharacterReceived 事件。
标签: c# xaml keydown eventhandler