2

我们有一个 WPF 应用程序,我们需要在其中检测用户是否正在键入可以出现在文本框中的内容。WinForms 曾经有一个很好的 OnKeyPressed 覆盖,它与 OnKeyDown 的不同之处在于它仅在输入可打印字符时调用(例如,它区分“A”和“a”,但不区分顶行的“1”与数字键盘。它也忽略了“Shift”等键。)我们需要在 WPF 中复制该功能。

现在我知道我可以覆盖 OnKeyDown 并检查键码,但这意味着手动测试每个可能的键,这会导致某些内容出现在文本框中。这似乎是我发现的其他类似 SO 问题的共识,但我无法相信如此基本的东西会被排除在 API 之外。

除了怪物 if-tree 之外,一个“hacky”解决方案是使用内存中的文本框,将键码传递给它,然后检查文本是否有长度。但是,即使将其作为可能的解决方案,我也会感到恶心!啊!!我觉得脏!

所以......判断用户是否按下一个或多个键会导致可打印字符的最简单方法是什么?

TIA,

标记

4

1 回答 1

3

实际上,我想我刚刚找到它,所以我将答案发布给其他人。您根本不使用任何“关键”事件。WPF 更清楚地将它们与文本值区分开来。因此,您覆盖了OnPreviewTextInput和/或OnTextInput函数。要获取实际键入的内容,请检查.Text返回简单字符串的事件 args 上的属性。

完成并完成!

希望这对其他人有帮助!一直把我逼上墙!

于 2011-05-16T00:15:57.603 回答