C# 当用户控件强制转换为控件时,单击处理程序不会激发
当我有隐藏控件时,我有一个WinForms用户控件。单击“使用”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; } } ... } 看。这工作得很好,一切都很好,直到
public new event EventHandler Click
{
add
{
base.Click += value;
foreach (Control control in Controls)
{
control.Click += value;
}
}
...
}
看。这工作得很好,一切都很好,直到我将其转换为一个通用控件(例如,当传递对某个特定用户控件类型一无所知的对象的引用时)
在这种情况下,当添加一个click处理程序时,它被绑定到基本控件\u click,完全绕过了上面假定隐藏基本方法的方法。有什么建议吗?这就是使用new关键字来抑制措辞强烈的编译器警告的危险。只是不要这样做,在人工时间运行的微优化代码是没有意义的。迭代构造函数中的控件并订阅它们的单击事件,让事件处理程序调用OnClick。谢谢。有时,在使用通用/懒惰的方式后,很容易忽略显而易见的东西。至少对我来说。