相当于WPF中的keypreview属性

Hen*_*und 8 wpf keyboard-events

我正在考虑从WinForms中为我的一些应用程序投入WPF,目前我正在研究组合条形码阅读器/文本输入程序(医疗保健患者表格).

为了能够处理条形码字符,我依赖于WinForms中的Keypreview属性(因为无论焦点是什么控件都可以扫描条形码).

但对于WPF应用程序,我似乎无法在VS2008或VS2010中找到KeyPreview属性.

是否有替代方法/解决方案来处理WPF中的条形码字符?

Rgrds Henry

Ara*_*and 6

在您自己的UserControls或Controls中使用覆盖(这是来自UIElement的覆盖)

protected override void OnPreviewKeyDown(System.Windows.Input.KeyEventArgs e) {
     base.OnPreviewKeyDown(e);
  }
Run Code Online (Sandbox Code Playgroud)

如果你想在你不创建的任何元素上预览键,你可以这样做:

 Label label = new Label();
 label.PreviewKeyDown += new KeyEventHandler(label_PreviewKeyDown);
Run Code Online (Sandbox Code Playgroud)

然后有这样的处理程序: -

  void label_PreviewKeyDown(object sender, KeyEventArgs e) {

  }
Run Code Online (Sandbox Code Playgroud)

如果您将事件标记为已处理(e.Handled = true;),则将停止引发的KeyDown事件.


Ric*_*ler 3

WPF 使用事件冒泡和隧道。换句话说,事件在视觉元素树中向下和向上移动。有些事件会有相应的预览事件。所以MouseDown会有一个PreviewMouseDown你可以回应的。查看此链接并向下滚动到 WPF 输入事件部分。