2012-02-08 39 views
1

我在表单中有一个按钮...旁路按钮ISDEFAULT

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

你肯定知道,它做什么。我所需要的,是绕过同时按下回车键提交事件,但只有在所有在我的形式之一场...

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

的原因,为什么我需要这样的事,是因为输入条形码将通过条形码阅读器进行设置。用户用他的阅读器阅读文章条形码,并且它像无线键盘一样工作。它发送击键 - 条形码的数字,最后发送Enter键。所以我需要得到这个输入keystroke并取消提交,如果它来自那个特定的领域。我怎样才能做到这一点?

感谢,JiKra

+1

如果你处理= true,那么它仍然会触发Submit? – Paparazzi 2012-02-08 01:13:22

+1

您是否尝试过PreviewKeyDown事件? – Carlo 2012-02-08 01:17:04

回答

2

正如其他人在评论中提到:

PreviewKeyDown事件的文本框,集e.Handled为true,如果按下的键一直是Enter键:

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

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