WinForms / .NET:如何将事件处理程序附加到事件?

时间:2011-11-17 20:58:19

标签: .net winforms reflection delegates

如何将事件处理程序附加到事件?

伪代码,例如:

public static EventHandler GetChangeUICuesEventHandler(Control SomeControl)
{
   EventHandler changeUICuesEventHandler = SomeControl.ChangeUICues;
   return changeUICuesEventHandler
}

示例用法(伪代码):

Control control = GetControlByName(Console.ReadLine());
button1.ChangeUICues += GetChangeUICuesEventHandler(control);

1 个答案:

答案 0 :(得分:1)

我提供以下作为替代路径而不是直接回答......所以这里......

您是否可以通过确保已附加事件处理程序的控件(在本例中为参数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;