Кнопка обхода IsDefault - PullRequest
       14

Кнопка обхода IsDefault

1 голос
/ 08 февраля 2012

У меня есть кнопка в моей форме ...

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

Вы точно знаете, что он делает. Что мне нужно, так это обойти событие submit при нажатии Enter, но только в одном поле из всех в моей форме ...

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

Причина, по которой я нуждаюсь в такой вещи, заключается в том, что ввод штрих-кода будет установлен через считыватель штрих-кода. Пользователь читает штрих-код статьи со своим читателем, и он работает как беспроводная клавиатура. Он посылает нажатия клавиш - номера штрих-кода и, в конце, отправляет нажатие клавиши Enter. Поэтому мне нужно получить это нажатие клавиши ввода и отменить отправку, если она происходит из этого конкретного поля. Как я могу это сделать?

Спасибо, JiKra

1 Ответ

2 голосов
/ 08 февраля 2012

Как уже упоминалось в комментариях других:

В событии PreviewKeyDown TextBox установите e.Handled в значение True, если нажатой клавишей была клавиша Enter:

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

Это предотвращает запуск ключа другими обработчиками, такими как тот, который отвечает за выполнение кнопки по умолчанию.

...