MSDN上说是按照这个顺序来进行的 Leave--Validating--Validated--LostFocus(不特殊说明时CausesValidation为true)。可是在跟踪代码时发现顺序怎么是LostFocus--Leave--Validating--Validated呢?后来发现原来还和离开的方法有关系。当使用鼠标或直接设置焦点离开的时候顺序应当为LostFocus--Leave--Validating--Validated,而MSDN上说的那个顺序是以TAB键移动焦点时的顺序。仔细看了一下MSDN中好像并没有对此有明确的说明,而且LostFocus在视图设计器中都没有,只能通过代码来添加,是否是意味着这个事件不是很推荐使用呢?

离开方式

使用Tab键或set Focus

使用鼠标点击

触发顺序

Leave--Validating--Validated--LostFocus

LostFocus--Leave--Validating--Validated


     另外若将要移动到的下一个控件的CausesValidation为false时,则原控件的Validating和Validated事件并不会触发。它们将会发生在下一次焦点移动到CausesValidation为true的控件的GotFocus事件之前。而且若这个CausesValidation为true的控件为自身,也不会引发这两个事件,在MSDN中好像也没有非常明确的说明。

     A,C的CausesValidation为true,B的CausesValidation为false  用鼠标点击移动

移动顺序

A--B--C

A--B--A

触发顺序

A.LostFocus--A.Leave--B.GotFocus--B.LostFocus--B.Leave--A.Validating--A.Validated--C.GotFocus

A.LostFocus--A.Leave--B.GotFocus--B.LostFocus--B.Leave--A.GotFocus
    
     第一组中A的Validating和Validated事件发生在C的GotFoucus之前,而第二组中A的第一次Validating和Validated事件就不会发生了

相关文章:

  • 2021-12-05
  • 2022-12-23
  • 2021-07-03
  • 2021-10-08
  • 2022-12-23
  • 2021-08-22
  • 2021-07-12
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-29
  • 2021-12-19
  • 2021-07-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案