18

LostFocusLeave事件有什么区别TextBox

4

4 回答 4

24

检查这些链接上的注释部分:

根据 MSDN,更改控件的焦点时会有所不同。该Leave事件发生在验证之前和验证LostFocus之后。


更新:2019 年 2 月 14 日

我看到我仍然对我几年前发布的答案获得意见和支持。现在,我必须在上面的 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       --

注意:强调我添加的报价中的文字和指标

于 2012-10-12T06:47:02.650 回答
5

它们发生在控件生命周期的不同点。根据使用的方法,验证发生在 afterLeave和 before 之后LostFocus

请参阅 MSDN:http: //msdn.microsoft.com/en-us/library/system.windows.forms.control.lostfocus.aspx

于 2012-10-12T06:35:51.940 回答
3

Leave() 事件表示先执行键盘事件再执行鼠标事件,而 Lost() 事件表示先执行鼠标事件再执行键盘事件。

于 2012-10-12T07:26:31.883 回答
0

总而言之,它要么不适用于键盘,要么不适用于鼠标。考虑到您无法预测将使用哪种输入法,它不是很有帮助。

然而,这不是我的意思。LostFocus 会在表单加载时发生,Leave 不会。

这将在加载表单时将文本框变为黄色。

Private Sub txtBox_LostFocus(sender As Object, e As EventArgs) Handles TextBox.LostFocus
    txtBox.BackColor = Color.Yellow
End Sub

这不会。

Private Sub txtBox_TextLeave(sender As Object, e As EventArgs) Handles TextBox.Leave
    txtBox.BackColor = Color.Yellow
End Sub
于 2021-03-29T13:21:17.163 回答