Вопрос по return, xaml, passwordbox, .net-3.5, wpf – Какой лучший способ поймать ключ возврата в PasswordBox? (WPF / XAML)

20

Как лучше всего поймать ключ возврата в PasswordBox? (WPF / XAML)

У меня есть поле TextBox и поле PasswordBox в моей форме входа (для ввода имени пользователя и пароля). У меня также есть кнопка входа в систему, которая вызывает метод, который выполняет процесс проверки входа в систему.

Мне нужно, чтобы клавиша Return реагировала таким же образом в PasswordBox, чтобы у пользователя была возможность ввести свое имя пользователя и пароль и просто нажать Return, чтобы войти в систему.

Кто-нибудь знает, как это делается в WPF? Любая помощь приветствуется.

Ваш Ответ

3   ответа
4

Вы можете обработать событие KeyDown в PasswordBox (и TextBox при желании), а затем использовать следующий обработчик события -

private void OnKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key != Key.Return && e.Key != Key.Enter)
        return;
    e.Handled = true;
    HandleEnter();
}
Это будет отлично работать, у меня просто проблемы с поиском событий, которые можно использовать для разных элементов управления WPF ... Спасибо! Giffyguy
53

Button предоставляет свойство IsDefault. Если задано значение true, если нажать клавишу возврата, когда некоторые объекты в окне имеют фокус, код события нажатия кнопки будет запущен автоматически. Этот механизм работает как брелок с паролем.

Спасибо Точно, что мне было нужно!
Проблема заключается в том, что если для свойства IsDefault кнопок установить значение true, а затем нажать клавишу возврата, находясь в любом текстовом поле (например, в текстовом поле имени пользователя), оно все равно будет запущено ...
@JPProgramer Я понимаю, что вы имеете в виду, тем не менее, это ожидаемое поведение в форме.
Даже лучше! Спасибо! Giffyguy
Следует отметить, что свойства IsDefault, IsDefaults и IsCancel не реализованы в классе кнопок в WinRT. Неудовлетворительно.
1

Вы можете установить его в свойстве Command кнопки.
Вы также можете добавить KeyGesture к InputBindings вашей формы входа, чтобы связать клавишу Enter для запуска вашей RoutedCommand.

Затем добавьте CommandBinding в CommandBindings вашей формы входа, чтобы связать RoutedCommand с исполняемыми обработчиками в вашем коде и выполнить или запустить процесс проверки входа в систему.

Звучит мощно! Но действительно ли это самый простой способ сделать это сейчас? Если это так - у меня есть Microsoft для меня, позвольте сказать вам ... Giffyguy
Зависит. Таким образом, у вас есть только один обработчик в вашем коде вместо двух (включен для кнопки, один для поля пароля). Он более гибкий и не такой сложный, как кажется. Есть только два дополнительных шага, которые вы должны сделать только один раз: определение RoutedCommand и добавление CommandBinding. KeyGesture аналогичен добавлению обработчика событий в поле паролей, для кнопки вы устанавливаете команду вместо обработчика щелчка. Но у вас есть смысл, это, вероятно, излишне для простой формы входа в систему. :)

Похожие вопросы