首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测用户控件内部控件焦点

检测用户控件内部控件焦点
EN

Stack Overflow用户
提问于 2011-12-12 04:25:53
回答 1查看 346关注 0票数 1

是否可以检测控件是否已在用户控件中获得焦点?我指的不是一些我们在设计时添加到用户控件中的控件,而是我们在窗体上使用用户控件后添加的控件。面板就是一个很好的例子。我的用户控件就像一个面板,我想要检测用户控件上包含的(嵌套的)控件何时获得任何焦点,我会做我的事情。

谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-12 05:22:40

我处理这个问题的方法是,当创建了UserControl并且您不处于设计模式时,循环访问用户控件中的每个控件,将钩子添加到它们的GotFocus事件,并将钩子指向UserControl的一个方法(比如ChildControlGotFocus),这反过来会引发用户控件的宿主可以使用的事件。

例如,下面是一个实现此功能的示例UserControl:

代码语言:javascript
复制
public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();

        if (!this.DesignMode)
        {
            RegisterControls(this.Controls);
        }

    }
    public event EventHandler ChildControlGotFocus;

    private void RegisterControls(ControlCollection cControls)
    {
        foreach (Control oControl in cControls)
        {
            oControl.GotFocus += new EventHandler(oControl_GotFocus);
            if (oControl.HasChildren)
            {
                RegisterControls(oControl.Controls);
            }
        }
    }

    void oControl_GotFocus(object sender, EventArgs e)
    {
        if (ChildControlGotFocus != null)
        {
            ChildControlGotFocus(this, new EventArgs());
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8467193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档