2011-05-16 24 views
2

我们有一个WPF应用程序,我们需要检测用户是否正在输入可以出现在文本框中的东西。 WinForms过去有一个很好的OnKeyPressed重写,它与OnKeyDown的不同之处在于,它仅在可打印字符被键入时调用(例如,它区分'A'和'a',但不是在顶部行'1'和数字键盘,它也忽略了像'Shift'等键)我们需要在WPF中复制该功能。在WPF中,我如何复制旧的WinForms OnKeyPressed功能?

现在我知道我可以重写OnKeyDown并检查键码,但是这意味着要手动测试每个可能导致出现在文本框中的键的可能键。这似乎是我发现的其他类似SO问题的共识,但我不能相信这么基本的东西会被排除在API之外。

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

SO ...如果用户按下一个或多个可导致可打印字符的按键,最简单的方法是什么?

TIA,

马克

回答

3

其实,我想我只是发现它,所以我发帖对他人的答案。你根本不使用任何'Key'事件。 WPF更清晰地区分了文本值。因此,您可以覆盖OnPreviewTextInput和/或OnTextInput的功能。要获得实际输入的内容,请检查返回简单字符串的事件参数的.Text属性。

完成并完成!

希望这可以帮助别人!一直在把我拉上墙!