是否有可能检测控件是否已成为用户控件中的焦点? 我的意思是不是在设计时在用户控件中添加的某些控件,而是在窗体上使用用户控件后添加的控件。 一个典型的例子是面板。 我的用户控件就像一个面板,我想检测用户控件上包含的(嵌套)控件什么时候可以做我的工作。

谢谢大家!

===============>>#1 票数:1 已采纳

我将采用的方法是在创建UserControl且您未处于设计模式时,循环浏览该用户控件中的每个控件,将钩子添加到其GotFocus事件中,并将该钩子指向UserControl的方法(例如ChildControlGotFocus ),进而引发用户控件宿主可以使用的事件。

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

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());
        }
    }
}

  ask by MahanGM translate from so

未解决问题?本站智能推荐: