[英]Why does the LostFocus event get called at different times?
在参考此MSDN页面 (或关于此事项的任何相关页面)时,它指出:
使用键盘更改焦点时,焦点事件按以下顺序发生:
- 输入
- 的GotFocus
- 离开
- 证实
- 验证
- 引发LostFocus
但是,当您使用鼠标来引发事件时,订单会发生变化!
使用鼠标或通过调用Focus方法更改焦点时,焦点事件按以下顺序发生:
- 输入
- 的GotFocus
- 引发LostFocus
- 离开
- 证实
- 验证
这不会使事件链完全不同吗? 我的解释是键盘链确保一切正常,然后引发LostFocus
事件。 然而,鼠标事件似乎在出于某种原因进行验证之前提高了它。 这是为什么?
如上所述:
在MSDN文章中你链接的措辞足够强大? 永远不要使用LostFocus,只留下。
键盘导航必须按此顺序才能应用验证。 这些是为了对它们作出反应以验证任何输入字符串。
我能想到的最好的例子是验证中的e.Cancel方面。 使用键盘进行导航通常是控制导航类型(包括子控件和父控件)的控件。 使用鼠标进行表单导航并不总是导致选择控件。 例如,关闭表单或只是单击控件外部(即重新定位表单)。 在控件外部发生鼠标单击时,并不总是希望进行验证。 希望有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.