当前位置:编程学习 > C#/ASP.NET >>

用户控件中失去焦点的问题

请教一个用户控件中失去焦点的问题,一个简单的场景如下:
有一个带有菜单的主窗体F(不设置Mdi),它加载了一个用户控件U,这个用户控件中有很多个TextBox,这些TextBox都订阅了TextBox的Leave事件和Validating事件.
    现在输入焦点在U中的某个TextBox上,然后点击F窗体上的菜单,焦点未转移,也就是说没有触发Leave事件或Validating事件.输入焦点的确还在那个TextBox上闪烁,为什么会出现这种情况?
                
    我想在用鼠标点击菜单时,使用户控件上的焦点真正地离开,触发Leave事件或Validating事件,应该怎么做?
    
不要在菜单事件中手动调用Leave或Validating处理函数,这仅仅是个一个简单的例子,现实场景很复杂的,用户控件中还有用户控件,最底层的用户控件中的TextBox需要触发Leave事件或Validating事件,但最底层的触发事件是没有对外公开的 --------------------编程问答-------------------- 碰到过这事
使用的是菜单事件中调用 处理数据 方法
如数据不正确则焦点返回 --------------------编程问答--------------------
引用 1 楼 rinall 的回复:
碰到过这事
使用的是菜单事件中调用 处理数据 方法
如数据不正确则焦点返回


除了在"菜单事件中调用 处理数据 方法"还有没有别的方法? --------------------编程问答-------------------- 定义画面的点击事件。判断是不是在你自定义控件里。不在的话。判断是是不是焦点在你的控件里。在的话就让它离开。
--------------------编程问答-------------------- 菜单点击时,菜单按钮.Focus(); --------------------编程问答--------------------
引用 2 楼 Dic4000 的回复:
引用 1 楼 rinall 的回复:碰到过这事
使用的是菜单事件中调用 处理数据 方法
如数据不正确则焦点返回

除了在"菜单事件中调用 处理数据 方法"还有没有别的方法?

好像没有别的办法  就象是你打开两个程序  他们的焦点是独立的 
比如程序A中的一个控件C现在获得焦点  切换到程序B 在切回来 焦点还是在控件C上  不会触发事件
--------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,