我在WPF中创建了一个屏幕,接受来自条形码扫描仪的输入。我收听了PreviewTextInput事件和KeyUp事件,让我确定扫描仪“输入”的内容以及完成时间。它很棒。您只需要显示表单,它就会接受条形码扫描。
问题是,我在页面上有其他控件,并且它们会导致问题。例如,当您按下窗体上的按钮时,该按钮就会有焦点。从该点开始按Enter键会导致触发按钮事件处理程序。它不会自动放弃焦点。
有谁知道这种问题的优雅解决方案?我宁愿不为每个事件处理程序添加代码来聚焦另一个元素,但我会这样做作为最后的手段。
答案 0 :(得分:4)
Button
(实际上UIElement
)具有此特定用途的属性:UIElement.Focusable。
如果你在xaml或代码中将其设置为false,你仍然可以点击按钮,但它不会将焦点从其他UIElements上移开。
答案 1 :(得分:0)
PreviewTextInput
事件可能会改变焦点(如果有按钮则会散焦),这样当条形码末尾的回车键点击时,按钮就不会被按下。
答案 2 :(得分:0)
我们只需设置按钮属性即可启用这些功能
接受按钮 - Button.IsDefault = "True"
取消按钮 - Button.IsCancel = "True"