关于.Net WinForm 中的控件失去焦点时触发事件的问题 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事件就不会发生了
关于.Net WinForm 中的控件失去焦点时触发事件的问题
最新推荐文章于 2024-04-28 04:11:08 发布