Мешайте Текстовому полю WPF терять фокус

У меня есть WPF Textbox, то, что я хочу проверить, что текстовое значение правильно, прежде чем я позволю ему терять клавиатуру/фокус.

Я попробовал установку e. Обработанный в InputBox_LostFocus & InputBox_LostKeyboardFocus события, но это, кажется, не достигает того, что я хочу.

Любые предложения о том, как я могу заблокировать фокус к a Textbox?

7
задан Dave Clemmer 18 September 2011 в 18:13
поделиться

1 ответ

Вы можете вызвать Mouse.Capture ] на UIElement .Затем это даст вам каждое событие мыши, которое происходит независимо от того, относится ли он к элементу или нет. но его сложно использовать. Вы можете захватить указатель мыши на своем текстовом поле и зарегистрировать потерянные события захвата, когда вы потеряете захват, вы можете восстановить его. вы должны остерегаться странного поведения. Обычно это плохая практика (я думаю) - не позволять пользователю уходить с поля. лучше разрешить им делать все, что они хотят, но отключить кнопку, которую они нажимают после ввода данных, пока все поля не станут действительными (или что-то подобное)

Вот некоторые ссылки

другой вопрос SO

msdn пример кода

поле со списком использует захват мыши, чтобы узнать, щелкнул ли пользователь в другом месте приложения, чтобы закрыть поле со списком, если оно открыто, если вы щелкнете по другому элементу управления (или за пределами окна)

Я не знаю, Техника не позволит вам убрать элемент с помощью табуляции. В приложении WPF есть два типа фокуса. У вас есть логический фокус и фокус на клавиатуре. Несколько элементов могут иметь логический фокус одновременно (каждый в пределах области фокуса). подумайте, например, что текстовое поле может иметь логический фокус, когда вы щелкаете меню (которое также имеет логический фокус). Фокус клавиатуры может быть только в одном месте одновременно. Вы будете много работать на себя. Я бы серьезно подумал, правильно ли вы делаете свое взаимодействие. Вы можете потратить дни на правильное взаимодействие. Если вы остановите потерю фокуса текстового поля, что произойдет, если пользователь нажмет кнопку закрытия?

вот статья msdn о фокусе

4
ответ дан 6 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

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