绕过按钮IsDefault

时间:2012-02-08 00:19:36

标签: .net wpf xaml wpf-controls keyboard-events

我的表格中有一个按钮......

<Button Name="Submit" Content="OK"
                IsDefault="True"
                Click="Submit_Click"/>

你确定知道,它做了什么。我需要的是,在按Enter键时绕过提交事件,但只在我的表单中的所有字段中...

<TextBox Name="ArticleBarcode"
             Text="{Binding Path=Barcode}"
             KeyDown="ArticleBarcode_KeyDown"/>

原因,为什么我需要这样的东西,是因为条形码的输入将通过条形码阅读器设置。用户用他的阅读器读取文章条形码,它就像无线键盘一样。它发送击键 - 条形码的数字,最后,它发送Enter键击。因此,我需要输入此按键并取消提交,如果它来自该特定字段。我怎么能这样做?

谢谢,JiKra

1 个答案:

答案 0 :(得分:2)

如其他人的评论所述:

在TextBox的PreviewKeyDown事件中,如果按下的键是e.Handled键,则将Enter设置为True:

private void ArticleBarcode_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
        e.Handled = true;
}

这可以防止键触发其他处理程序,例如负责执行默认按钮的处理程序。