繁体   English   中英

为什么LostFocus事件会在不同时间被调用?

[英]Why does the LostFocus event get called at different times?

在参考此MSDN页面 (或关于此事项的任何相关页面)时,它指出:

使用键盘更改焦点时,焦点事件按以下顺序发生:

  1. 输入
  2. 的GotFocus
  3. 离开
  4. 证实
  5. 验证
  6. 引发LostFocus

但是,当您使用鼠标来引发事件时,订单会发生变化!

使用鼠标或通过调用Focus方法更改焦点时,焦点事件按以下顺序发生:

  1. 输入
  2. 的GotFocus
  3. 引发LostFocus
  4. 离开
  5. 证实
  6. 验证

这不会使事件链完全不同吗? 我的解释是键盘链确保一切正常,然后引发LostFocus事件。 然而,鼠标事件似乎在出于某种原因进行验证之前提高了它。 这是为什么?

如上所述:

在MSDN文章中你链接的措辞足够强大? 永远不要使用LostFocus,只留下。

键盘导航必须按此顺序才能应用验证。 这些是为了对它们作出反应以验证任何输入字符串。

我能想到的最好的例子是验证中的e.Cancel方面。 使用键盘进行导航通常是控制导航类型(包括子控件和父控件)的控件。 使用鼠标进行表单导航并不总是导致选择控件。 例如,关闭表单或只是单击控件外部(即重新定位表单)。 在控件外部发生鼠标单击时,并不总是希望进行验证。 希望有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM