为什么在不同的时间调用LostFocus事件
本文关键字:调用 LostFocus 事件 时间 为什么 | 更新日期: 2023-09-27 17:58:33
参考此MSDN页面(或任何相关页面),声明:
使用键盘更改焦点时,会在中发生焦点事件以下顺序:
- 输入
- GotFocus
- 离开
- 正在验证
- 已验证
- 失去焦点
但是,当您使用鼠标引发事件时,顺序会发生变化!
使用鼠标或调用focus方法更改焦点时,焦点事件按以下顺序发生:
- 输入
- GotFocus
- 失去焦点
- 离开
- 正在验证
- 已验证
这难道不会使一连串的事件完全不同吗?我在这里的解释是,键盘链确保一切正常,然后引发LostFocus
事件。然而,由于某种原因,鼠标事件似乎在验证之前就引发了它。为什么?
如上所述:
在你链接的MSDN文章中,措辞是否足够强硬?永远不要使用LostFocus,只使用Leave。
键盘导航必须按此顺序才能应用验证。它们旨在对它们作出反应,以便验证任何输入字符串。
我能想到的最好的例子是验证中的e.Cancel方面。使用键盘进行导航通常是控制导航类型的控件(包括子控件和父控件)。使用鼠标进行表单导航并不总是导致选择控件。例如,关闭窗体或简单地在控件外单击(即重新定位窗体)。当鼠标点击发生在控件之外时,并不总是希望进行验证。希望能有所帮助。