C# 如何将EventHandler作为方法参数传递
我正在尝试编写一个通用方法,该方法还将处理单击事件,我希望允许用户将自己的方法作为单击事件传递。 大概是这样的:C# 如何将EventHandler作为方法参数传递,c#,events,delegates,event-handling,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 LinkB
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);
}
}
公共静态分页(
控件分页控件,短当前页,短总页,?)
{
对于(int i=0;i
我知道这是可能的,但我不记得怎么做…只需使用事件处理程序的类型作为参数类型:
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);
}
}
publicstaticvoidbuildpaging(控件pagingControl
,短当前页
,短页
,EventHandler eh/类似的内容
void DoWork(Action<object, EventArgs> handler)
{
if (condition)
{
OnSomeEvent(this, EventArgs.Empty);
}
}
void OnSomeEvent(object sender, EventArgs e)
{
}
您可以将动作委托传递给函数
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);
}
publicstaticvoidbuildpaging(控件pagingControl,
短currentPage、短TotalPage、Action(操作)
对于(int i=0;i
可能重复@LiranFriedman:不需要。已是委托。请查看其签名。但单击事件不接受“handler”作为有效值
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);
}