WPF: Возврат фокуса к текстовому полю рекурсивным вызовом события Lost focus. Как решить? - PullRequest
1 голос
/ 08 сентября 2010

У меня есть форма WPF, в которой есть текстовое поле и метка. В событии «Потерянный фокус» текстового поля я выполняю некоторую проверку, и если проверка не проходит, я показываю сообщение об ошибке в метке и помещаю фокус вернуться в текстовое поле. Проблема в том, что я снова сосредоточил внимание на текстовом bos, «событие Lost_Focus снова запускается, и моя функция проверки вызывается рекурсивно, и я получаю исключение« StackOverflow »

  An unhandled exception of type 'System.StackOverflowException' occurred in 
  mscorlib.dll

Если я прокомментирую строку размещения курсора / фокуса в текстовом поле, все будет хорошо. Но мне нужно, чтобы курсор был в текстовом поле, если проверка не удалась

Есть мысли, как от этого избавиться?

1 Ответ

0 голосов
/ 08 сентября 2010

Как насчет обработки TextBox.PreviewLostKeyboardFocus вместо этого?А в обработчике событий просто устанавливайте «e.Handled = true» каждый раз, когда проверка завершается неудачей?

...