如何将EventHandler作为方法参数传递

Lir*_*man 11 c# events delegates event-handling

我正在尝试编写一个也会处理click事件的泛型方法,我希望允许用户将自己的方法作为click事件传递.像这样的东西:

public static void BuildPaging(
    Control pagingControl, short currentPage, short totalPages,  ???)
{
    for (int i = 0; i < totalPages; i++)
    {
        LinkButton pageLink = new LinkButton();
        ...
        pageLink.Click += ???;
        pagingControl.Controls.Add(paheLink);
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是可能的,但我不记得怎么做了......

Pat*_*man 20

只需使用事件处理程序的类型作为参数类型:

public static void BuildPaging(Control pagingControl
                              , short currentPage
                              , short totalPages
                              , EventHandler eh // <- this one
                              )
{
    for (int i = 0; i < totalPages; i++)
    {
        LinkButton pageLink = new LinkButton();
        ...
        pageLink.Click += eh;
        pagingControl.Controls.Add(paheLink);
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:完成后不要忘记删除事件处理程序,否则可能会泄漏内存!

  • @LiranFriedman:不需要。[`EventHandler`](http://msdn.microsoft.com/zh-cn/library/system.eventhandler%28v=vs.110%29.aspx)已经是一个委托。查看其签名。 (2认同)