如何在不中断文本输入事件的情况下阻止控件对键盘输入作出反应?

时间:2011-06-27 19:24:53

标签: .net wpf

我有一个带切换按钮的应用程序,当切换时,它会监听条形码扫描器输入的文本。当条形码扫描器开始向应用程序发送文本输入时,只要它发送空格字符,切换按钮(具有键盘焦点)就会被取消选择。

我需要找到一种方法来阻止我的切换按钮受到键盘输入的影响,同时仍然允许触发PreviewTextInput或TextInput事件。

如果我在切换按钮上处理PreviewKeyDown事件,我可以通过将e.Handled属性设置为true来停止按钮接收空格键输入,但这会停止触发PreviewTextInput和TextInput事件。

我已经考虑过点击后立即尝试从切换按钮中移除焦点,但这似乎太过分了。我还想避免对切换按钮进行子类化。我还考虑将按钮设置为禁用,并允许通过鼠标单击重新启用它,但这不是一个优雅的解决方案。我认为必须有一些机制将空格键与按钮相关联,如果我能弄清楚如何解除它们,我会有一个有效的解决方案,但我不知道它是如何工作的。< / p>

任何想法或想法将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

正如Mannimarco所建议的,一个好的解决方案是将切换按钮上的Focusable属性设置为False。

答案 1 :(得分:0)

单击该按钮时,将焦点设置为TextBox控件以捕获文本。 使控件的背景和字体颜色相同,以隐藏输入。

当切换按钮处于活动状态时,您必须捕获LostFocus事件并设置e.Handled = false;