C# 当用户控件强制转换为控件时,单击处理程序不会激发

C# 当用户控件强制转换为控件时,单击处理程序不会激发,c#,winforms,events,user-controls,C#,Winforms,Events,User Controls,当我有隐藏控件时,我有一个WinForms用户控件。单击“使用” public new event EventHandler Click { add { base.Click += value; foreach (Control control in Controls) { control.Click += value; } } ... } 看。这工作得很好,一切都很好,直到

当我有隐藏控件时,我有一个WinForms用户控件。单击“使用”

public new event EventHandler Click
{
    add
    {
        base.Click += value;
        foreach (Control control in Controls)
        {
            control.Click += value;
        }
    }
    ...
}
看。这工作得很好,一切都很好,直到我将其转换为一个通用控件(例如,当传递对某个特定用户控件类型一无所知的对象的引用时)


在这种情况下,当添加一个click处理程序时,它被绑定到基本控件\u click,完全绕过了上面假定隐藏基本方法的方法。有什么建议吗?

这就是使用new关键字来抑制措辞强烈的编译器警告的危险。只是不要这样做,在人工时间运行的微优化代码是没有意义的。迭代构造函数中的控件并订阅它们的单击事件,让事件处理程序调用OnClick。谢谢。有时,在使用通用/懒惰的方式后,很容易忽略显而易见的东西。至少对我来说。