これほど簡単ではありません。あるクラスで宣言されたイベントは、そのクラスのユーザーにのみadd
とremove
が公開されます。イベントの呼び出しリストには、クラス内からのみアクセスできます。
ですから、これを達成することができる一つの方法は、このような独自のMyButton
クラスを継承することです。だから私はbase.Click
イベントをラップし、余分なイベントで呼び出しリストを保存する新しいClick
イベントを作成
public class MyButton : Button
{
private event EventHandler MyClick;
public new event EventHandler Click
{
add
{
MyClick += value;
base.Click += value;
}
remove
{
MyClick -= value;
base.Click -= value;
}
}
public Delegate[] GetClickHandlers()
{
return MyClick?.GetInvocationList();
}
}
を。
Console.WriteLine(
string.Join(Environment.NewLine,
button1.GetClickHandlers().Select(h => h.Method.Name)));
をしかし、今、私はこのコードを見ていることは、おそらくストアは/別のリストにadd
とremove
に渡さvalue
秒を削除できます。
あなたはよりも、このように、関連するハンドラの名前を取得することができますMyClick
を使用する代わりに、アイデアは同じです。
あなたの主な問題はGetInvocationList()
をButton.Click
に電話できないことです。
そのない[?イベントハンドラがすでに追加されている]の正確なDUPを(http://stackoverflow.com/questions/136975/has私はあなたの友人 – BugFinder