我有一个带切换按钮的应用程序,当切换时,它会监听条形码扫描器输入的文本。当条形码扫描器开始向应用程序发送文本输入时,只要它发送空格字符,切换按钮(具有键盘焦点)就会被取消选择。
我需要找到一种方法来阻止我的切换按钮受到键盘输入的影响,同时仍然允许触发PreviewTextInput或TextInput事件。
如果我在切换按钮上处理PreviewKeyDown事件,我可以通过将e.Handled属性设置为true来停止按钮接收空格键输入,但这会停止触发PreviewTextInput和TextInput事件。
我已经考虑过点击后立即尝试从切换按钮中移除焦点,但这似乎太过分了。我还想避免对切换按钮进行子类化。我还考虑将按钮设置为禁用,并允许通过鼠标单击重新启用它,但这不是一个优雅的解决方案。我认为必须有一些机制将空格键与按钮相关联,如果我能弄清楚如何解除它们,我会有一个有效的解决方案,但我不知道它是如何工作的。< / p>
任何想法或想法将不胜感激。谢谢!
答案 0 :(得分:1)
正如Mannimarco所建议的,一个好的解决方案是将切换按钮上的Focusable属性设置为False。
答案 1 :(得分:0)
单击该按钮时,将焦点设置为TextBox
控件以捕获文本。
使控件的背景和字体颜色相同,以隐藏输入。
当切换按钮处于活动状态时,您必须捕获LostFocus
事件并设置e.Handled = false;
。