Ale*_*lex 2 .net coldfusion user-controls windows-mobile
我有一个自定义UserControl(标签和文本框).
我的问题是我需要处理键,键入事件以在表单中的控件之间导航(.NET Compact Framework文本框,组合框等).使用.NET Compact Framework框架提供的控件可以正常工作,但是当我到达我编写的用户控件时,该控件无法获得焦点(文本框内部得到焦点)所以从这个用户控件我无法导航,因为在面板中我无法控制谁有焦点.
一点点模拟:Form-> Panel-> controls - >关于keydown事件(使用KeyPreview)和foreach我检查哪个控件关注面板并使用SelectNextControl传递给下一个控件,但没有人有焦点,因为用户控件没有专注......
我试图处理文本框的gotFocus事件并将焦点放到用户控件上,但是我得到了一个无限循环..
有人知道我该怎么办?
我们在Compact Framework上做了完全相同的事情,添加了一个全局焦点管理器,支持使用键盘输入在控件之间导航.
基本上,您需要做的是递减控件树,直到找到具有焦点的控件.它不是非常有效,但只要你每次关键事件只做一次,它就不应该是一个问题.
编辑:添加了递归焦点查找功能的代码:
public static Control FindFocusedControl(Control container)
{
foreach (Control childControl in container.Controls) {
if (childControl.Focused) {
return childControl;
}
}
foreach (Control childControl in container.Controls) {
Control maybeFocusedControl = FindFocusedControl(childControl);
if (maybeFocusedControl != null) {
return maybeFocusedControl;
}
}
return null; // Couldn't find any, darn!
}
Run Code Online (Sandbox Code Playgroud)