如何获得事件处理程序附加到事件?
伪代码,例如:
public static EventHandler GetChangeUICuesEventHandler(Control SomeControl)
{
EventHandler changeUICuesEventHandler = SomeControl.ChangeUICues;
return changeUICuesEventHandler
}
示例用法(伪代码):
Control control = GetControlByName(Console.ReadLine());
button1.ChangeUICues += GetChangeUICuesEventHandler(control);
我提供以下作为替代路径,而不是直接答案…
您是否可以用稍微不同的方式处理这个问题,也许可以确保您的控件已经附加了事件处理程序,在本例中是参数someControl
,而不是实现定义附加处理程序的接口。例如:
public interface ChangUICuesHandler
{
void OnChangeUICues(object sender, EventArgs e);
}
那么你可以这样使用:
Control control = GetControlByName(Console.ReadLine());
if (!(control is ChangeUICuesHandler))
{
throw new Exception("Input Control does not implement the interface");
}
var handlerControl = control as ChangeUICuesHandler;
button.ChangeUICues += handler.OnChangeUICues;