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

标签 c# events delegates event-handling

我正在尝试编写一个也将处理点击事件的通用方法,并且我希望允许用户将他自己的方法作为点击事件传递。 像这样:

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);
    }
}

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

最佳答案

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

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);
    }
}

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

关于c# - 如何将 EventHandler 作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27900277/

相关文章:

iphone - 什么是委托(delegate)和委托(delegate)方法

c# - 委托(delegate)不只是简写接口(interface)吗?

c# - Windows 窗体 - 奇怪的自动滚动行为

c# - 使用 LINQ 进行 Orderby 和 thenby

c# - 在 C# Windows 窗体中更改控件状态时如何忽略触发的简单事件?

c# - 在不阻塞的情况下上升事件并以正确的顺序接收事件

qt - QML,GridView 委托(delegate) : ReferenceError: `<variable_name>` is not defined

c# - 'L'运算符后缺少操作数

c# - 在 where 表达式中使用 Guid.Empty 挂起 Linq 查询

c# - 所有文本框的一个事件