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

Kyl*_*ran 10 c# events lost-focus winforms

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

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

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

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

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

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

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

Pau*_*tte 1

如上所述:

在MSDN文章中你的链接措辞够有力吗?切勿使用 LostFocus,仅使用 Leave。

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