我正在尝试编写一个也会处理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);
}
}
我知道这是可能的,但我不记得怎么做......
答案 0 :(得分:18)
只需使用事件处理程序的类型作为参数类型:
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);
}
}
注意:完成后不要忘记删除事件处理程序,否则可能会泄漏内存!
答案 1 :(得分:0)
这样的东西?
void DoWork(Action<object, EventArgs> handler)
{
if (condition)
{
OnSomeEvent(this, EventArgs.Empty);
}
}
void OnSomeEvent(object sender, EventArgs e)
{
}
将其作为参数传递:
DoWork(OnSomeEvent);
答案 2 :(得分:0)
您可以将操作委托传递给函数
public static void BuildPaging(Control pagingControl,
short currentPage, short totalPages, Action<type> action)
for (int i = 0; i < totalPages; i++)
{
LinkButton pageLink = new LinkButton();
...
pageLink.Click += action;
pagingControl.Controls.Add(paheLink);
}