Ответ 1
Проверьте раздел заметок по этим ссылкам:
-
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.lostfocus.aspx
-
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.leave.aspx
Согласно MSDN, есть разница при изменении фокуса элемента управления. Событие Leave
происходит до проверки, а LostFocus
происходит после проверки.
ОБНОВЛЕНИЕ: 14 февраля 2019
Я вижу, что я все еще получаю мнения и отклики на ответ, который я опубликовал пару лет назад. Теперь стало необходимым, чтобы я включил (довольно важную) цитату из ссылок MSDN выше, чтобы избежать путаницы среди новых программистов (обратите внимание на разницу порядка, особенно в случае фокусировки с помощью мыши или вызова метода Focus
):
Когда вы изменяете фокус с помощью клавиатуры (TAB, SHIFT + TAB и т.д.), Вызывая методы Select или SelectNextControl или устанавливая свойство ContainerControl.ActiveControl в текущую форму, события фокуса происходят в следующем порядке:
Enter GotFocus Leave <--- before validation Validating -- |<--- validation Validated -- LostFocus <--- after validation
Когда вы изменяете фокус с помощью мыши или вызываете метод Focus, события фокусировки происходят в следующем порядке:
Enter GotFocus LostFocus <--- before validation Leave <--- before validation Validating -- |<--- validation Validated --
NB: акцент на тексте и индикаторах в добавленной мной цитате