【问题标题】:WPF Accept input without focusWPF 接受没有焦点的输入
【发布时间】:2009-09-29 15:43:34
【问题描述】:

我在 WPF 中创建了一个屏幕,它接受来自条形码扫描仪的输入。我听 PreviewTextInput 事件和 KeyUp 事件,让我确定扫描仪“键入”的内容以及完成的时间。它工作得很好。您只需要显示表单,它就会接受条形码扫描。

问题是,我在页面上有其他控件,它们会导致问题。例如,当您按下表单上的按钮时,该按钮就会获得焦点。从该点按回车键会触发按钮事件处理程序。它不会自动放弃焦点。

有谁知道此类问题的优雅解决方案?我宁愿不向每个事件处理程序添加代码来关注另一个元素,但我会在最后的手段中这样做。

【问题讨论】:

  • 扫描仪如何“连接”到输入控件?
  • 它只是像键盘一样输入。

标签: wpf focus barcode-scanner


【解决方案1】:

Button(实际上是UIElement)有一个用于此特定目的的属性:UIElement.Focusable

如果您在 xaml 或代码中将此设置为 false,您仍然可以单击该按钮,但它不会将焦点从其他 UIElement 上移开。

【讨论】:

    【解决方案2】:

    我们只需设置按钮属性即可启用这些功能。
    接受按钮 - Button.IsDefault = "True"
    取消按钮 - Button.IsCancel = "True"

    【讨论】:

      【解决方案3】:

      PreviewTextInput 事件可以改变焦点(如果按钮有焦点,则散焦),这样当条形码末尾的回车键按下时,按钮就不会被按下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多