クリックイベントも処理する汎用メソッドを作成しようとしていますが、ユーザーが独自のメソッドをクリックイベントとして渡せるようにしたいと考えています。このようなもの:
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);
}
}
注:完了したら、イベントハンドラーを削除することを忘れないでください。削除すると、メモリがリークする可能性があります。
アクションデリゲートを関数に渡すことができます
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);
}
このようなもの?
void DoWork(Action<object, EventArgs> handler)
{
if (condition)
{
OnSomeEvent(this, EventArgs.Empty);
}
}
void OnSomeEvent(object sender, EventArgs e)
{
}
引数として渡す:
DoWork(OnSomeEvent);