WinForm-Windows控件的焦点事件顺序

 

(一)当通过使用键盘(Tab、Shift Tab等)或调用 Select 或 SelectNextControl 方法或通过将

    ContainerControl.ActiveControl 属性设置为当前窗体等方式更改焦点时,焦点事件按以下顺序发生:


    Enter --> GotFocus --> Leave --> Validating --> Validated --> LostFocus 

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

    Enter --> GotFocus --> LostFocus --> Leave --> Validating --> Validated

 

(三)除去 GotFocus 和 LostFocus 事件,任何情况下焦点事件按以下顺序发生:

    Enter --> Leave --> Validating --> Validated


注意:

(1)GotFocus 和 LostFocus 事件是关联于 WM_KILLFOCUS 和 WM_SETFOCUS Windows 消息的低级别焦点事件

   应对所有控件使用 Enter 和 Leave 事件。通常,GotFocus 和 LostFocus 事件仅在更新 UICues

   或编写自定义控件时使用。

(2)如果 CausesValidation 属性设置为 false,则将取消 Validating 和 Validated 事件。

(3)如果在 Validating 事件委托中,CancelEventArgs 的 Cancel 属性设置为 true,则正常情况下将

   在 Validating 事件之后发生的所有事件均被取消。并且焦点不会离开该控件。

(4)Enter 和 Leave 事件被 Form 类取消。Form 类中的等效事件为 ActivatedDeactivate 事件。

(5)Enter 和 Leave 事件是分层的,将沿父级链上下级联,直到到达相应的控件为止。例如,假定您

   有一个带有两个 GroupBox 控件的 Form,每个 GroupBox 控件有一个 TextBox 控件。将插入符号从一

   个 TextBox 移至另一个时,将对移出的 TextBox 和 GroupBox 引发 Leave 事件,而对移入的 GroupBox

   和 TextBox 引发 Enter 事件。
(6)请勿尝试从 LostFocus 事件处理程序中设置焦点。这样操作可能导致应用程序或操作系统停止响应。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值