任何按键按下的文本框keydown事件?

3
在WPF中,我希望一个文本框在聚焦时能够为任何按键触发事件。我不确定哪些按键无法触发 KeyDown 事件,但是举个例子,左箭头或右箭头按下时不会触发事件,光标只会向左或向右移动。我的最终目标是获得按下的任何键的 System.Windows.Forms.Keys 枚举值。我已经找到了关于转换 KeyKeys这个问题,现在我只需要截取每一个按键。是否有其他事件可以响应,比如 PreviewKeyDown (老实说,我不知道正常事件和“预览”事件之间的区别),或者文本框上是否有类似 AcceptsTab 的属性?

KeyDown和PreviewKeyDown之间的区别: http://www.dotnetspider.com/forum/130497-what-event-bubbling-event-tunneling.aspx - Bas
预览事件在动作之前被触发。例如,如果您按下“A”键,则在该“A”出现在文本区域之前将引发预览事件,并且在“A”出现在文本区域后将引发按键按下事件。 - Bathineni
1个回答

5
PreviewKeyDown-事件是您需要的。它在TextBox处理键消息之前触发,因此您可以获得所有键的事件。
如果您在PreviewKeyDownEvent中消耗了一个键,则可以将Event.Handled属性设置为true,TextBox将不再注意该键。
您会发现许多事件都有“Preview”前缀。这是一个经常使用的模式。在这里查看更多信息。有趣的部分是“路由策略”部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接