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

时间:2014-09-29 17:19:24

标签: c# winforms user-controls click

我有UserControl还有其他控件:

enter image description here

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

如果我没有添加任何控件,这是有效的,但如果我有一个面板,我尝试点击面板,我的UserControl的点击事件不会被解雇。< / p>

这是我的代码:

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点击事件的任何线索?

1 个答案:

答案 0 :(得分:2)

实际上实现这一点非常简单,你可以遍历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;
        }
    }

    //...
}