質問

メソッドの参照を別のメソッドに渡し、変数として保存したいと思います。後で、この参照を使用してイベントハンドラを定義したいと思います。

イベントハンドラーを作成するとき、メソッド参照は次のように渡されます:

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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top