c# – 如何在单击子控件时处理Control上的Click事件?

我有一个UserControl,其他控件:

我需要启用点击我点击用户控件的任何项目,这样我就可以设置UserControl的bordertyle.

如果我没有添加任何控件,这是有效的,但如果我有一个面板,我尝试单击面板,我的UserControl的click事件不会被触发.

这是我的代码:

public partial class TestControl : UserControl
{

    public TestControl()
    {
        InitializeComponent();
        this.Click += Item_Click;
        IsSelected = false;
    }

    public bool IsSelected { get; set; }

    void Item_Click(object sender, EventArgs e)
    {
        if (!IsSelected)
        {
            IsSelected = true;
            this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
        }
        else
        {
            IsSelected = false;
            this.BorderStyle = System.Windows.Forms.BorderStyle.None;
        }                
    }
}

有关如何触发我的UserControl点击事件的任何线索,即使我点击其他元素?

最佳答案 实际上实现这一点非常简单,你可以遍历UserControl中包含的所有控件,并将Item_Click注册到它们的EventHandler,它将在Click事件被触发时调用它:

public partial class TestControl : UserControl {
    public TestControl( ) {
        //...

        for ( int i = 0; i < Controls.Count; i++ ) {
            Controls[ i ].Click += Item_Click;
        }
    }

    //...
}
点赞