gpt4 book ai didi

.net - C# .NET Compact Framework,自定义 UserControl,焦点问题

转载 作者:行者123 更新时间:2023-12-01 22:45:23 25 4
gpt4 key购买 nike

我有一个自定义用户控件(一个标签和一个文本框)。

我的问题是我需要处理按下键、按下键事件以在表单中的控件之间导航(.NET Compact Framework 文本框、组合框等)。使用 .NET Compact Framework 框架提供的控件,它可以工作,但是当我到达我编写的用户控件时,该控件没有获得焦点(里面的文本框获得焦点)所以从这个用户控件我无法导航,因为在面板中我无法控制谁拥有焦点。

小模型:Form->Panel->controls->on keydown event (using KeyPreview) with a 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!
}

关于.net - C# .NET Compact Framework,自定义 UserControl,焦点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1648596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com