【问题标题】:Bypass Button IsDefault绕过按钮是默认值
【发布时间】:2012-02-08 00:19:35
【问题描述】:

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

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

你肯定知道,它的作用。我需要的是在按 Enter 时绕过提交事件,但仅在我的表单中的一个字段中...

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

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

谢谢,吉克拉

【问题讨论】:

  • 如果你让handled = true 那么它仍然会触发提交?
  • 您尝试过 PreviewKeyDown 事件吗?

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


【解决方案1】:

正如其他人在cmets中提到的那样:

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

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

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

【讨论】:

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