В чем разница между событиями LostFocus
и Leave
TextBox
?
Разница между событием LostFocus и выходом из события TextBox
Ответ 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: акцент на тексте и индикаторах в добавленной мной цитате
Ответ 2
Они происходят в разных точках жизненного цикла управления. В зависимости от используемого метода проверка выполняется после Leave
и до LostFocus
.
См. MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.lostfocus.aspx
Ответ 3
СобытиеLeave() означает, что сначала выполняется событие клавиатуры, а затем выполняется событие мыши, где событие Lost() означает, что сначала выполняется событие мыши, а затем выполняется событие клавиатуры.