【发布时间】:2011-06-28 19:57:53
【问题描述】:
我有一个带有切换按钮的应用程序,当切换按钮时,它将侦听来自条形码扫描仪的文本输入。当条形码扫描仪开始向应用程序发送文本输入时,只要它发送一个空格字符,切换按钮(具有键盘焦点)就会最终被取消选择。
我需要找到一种方法来防止我的切换按钮受到键盘输入的影响,同时仍然允许 PreviewTextInput 或 TextInput 事件触发。
如果我在切换按钮上处理 PreviewKeyDown 事件,我可以通过将 e.Handled 属性设置为 true 来阻止按钮接收空格键输入,但这会阻止 PreviewTextInput 和 TextInput 事件触发。
我曾考虑在单击切换按钮后立即从切换按钮中移除焦点,但这似乎太过分了。我还想避免对切换按钮进行子类化。我还考虑过将按钮设置为禁用并允许通过单击鼠标重新启用它,但这不是一个优雅的解决方案。我认为必须有某种机制将空格键与按钮按下相关联,如果我能弄清楚如何解除它们的关联,我会有一个可行的解决方案,但我不知道它是如何工作的。
任何想法或想法将不胜感激。谢谢!
【问题讨论】:
-
将按钮设置为不可聚焦可以吗?
-
是的,据我所知,这实际上是一个很好的解决方案。它可以防止按钮在仍然交互的同时接收键盘命令,并且我可以像平常一样接收我的 TextInput 事件。谢谢!
-
这听起来不是个好主意。用户如何在不使用鼠标的情况下点击按钮?
-
好吧,在这种情况下,由于条形码扫描仪输入与键盘输入相同,我们需要在按钮切换时忽略所有键盘输入。如果我们不这样做,扫描仪会在扫描字符时快速打开和关闭按钮,因为它会多次传入空格字符。基本上,我们不希望用户能够在没有鼠标的情况下点击按钮。