LostFocus事件与TextBox离开事件的区别

时间:2012-10-12 06:30:16

标签: c#-4.0

LostFocus的{​​{1}}和Leave事件之间有什么区别?

4 个答案:

答案 0 :(得分:13)

查看以下链接的备注部分:

根据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       --

N.B:强调我添加的报价中的文字和指标

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

Leave()事件表示首先执行键盘事件然后执行鼠标事件,其中Lost()事件表示首先执行鼠标事件然后执行键盘事件。

答案 3 :(得分: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