UserControl的事件处理程序不会触发

Xel*_*Xel 3 c# visual-studio-2010 winforms

UserControl包含各种控件.我为其click事件创建了一个事件处理程序.我希望在用户单击用户控件上的任何位置时触发/调用事件处理程序.

这是我用来添加UserControl我的WinForms应用程序的方法.

private void addContact(some parameters here)
{
     //This is my usercontrol
     contactsListItem.contactsListItem contact = new contactsListItem.contactsListItem();

    //
    //some codes here
    //

    //Adding an event handler for the click event
    contact.Click += new EventHandler(contact_Click);

    //Adding the UserControl to my application
    flowLayoutPanel_contactsList.Controls.Add(contact);
}
Run Code Online (Sandbox Code Playgroud)

contact_Click(...)事件处理程序应该改变我的背景UserControl.我已经尝试单步执行代码以查看事件处理程序是否触发,并且我发现无论我点击我的位置它都不会触发UserControl.

我通过互联网搜索过.我遇到过委托,订阅者和发布者等术语.

我该怎么做才能使我UserControl的点击事件的事件处理程序触发?

Str*_*llo 6

用户控件的结构是什么?单击事件不会在WindForms中冒泡,因此如果您在用户控件上单击控件,则后者不会触发任何Click事件.

在此输入图像描述

编辑:

最简单的解决方案是通过在用户控件中附加处理程序从每个子项手动冒泡事件:

child1.Click += new EventHandler(child_Click);
child2.Click += new EventHandler(child_Click);
child3.Click += new EventHandler(child_Click);
Run Code Online (Sandbox Code Playgroud)

并在child_Click内部触发Click事件:

this.OnClick(e);
Run Code Online (Sandbox Code Playgroud)