C#でメソッド参照を別のメソッドに渡す方法
質問
メソッドの参照を別のメソッドに渡し、変数として保存したいと思います。後で、この参照を使用してイベントハンドラを定義したいと思います。
イベントハンドラーを作成するとき、メソッド参照は次のように渡されます:
myButton.Click += new RoutedEventHandler(myButton_Click);
そして" RoutedEventHandler"のコンストラクターを見るとintelliSenseからは、次のようになります。
RoutedEventHandler(void(object, RoutedEventArgs))
私がやりたいのは、メソッド" myButton_Click"を渡すことです別の静的メソッドに追加し、そこにイベントハンドラを作成します。参照を静的メソッドに渡すにはどうすればよいですか?私は次を試しましたが、コンパイルしません:
public class EventBuilder
{
private static void(object, RoutedEventArgs) _buttonClickHandler;
public static void EventBuilder(void(object, RoutedEventArgs) buttonClickHandler)
{
_buttonClickHandler = buttonClickHandler;
}
public static void EnableClickEvent()
{
myButton.Click += new RoutedEventHandler(_buttonClickHandler);
}
}
ありがとう、 ベン
解決
メソッド参照を参照するには(デリゲートと呼ばれます。 NET)、署名ではなくハンドラー名を使用します。
public class EventBuilder
{
private static RoutedEventHandler _buttonClickHandler;
public EventBuilder(RoutedEventHandler buttonClickHandler)
{
_buttonClickHandler = buttonClickHandler;
}
public static void EnableClickEvent()
{
myButton.Click += new RoutedEventHandler(_buttonClickHandler);
}
}
他のヒント
試用
private static delegate void(object sender, RoutedEventArgs e) _buttonClickHandler;
所属していません StackOverflow