0

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

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

myButton.Click += new RoutedEventHandler(myButton_Click);

そして、intelliSense から "RoutedEventHandler" のコンストラクターを見ると、次のようになります。

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);
    }
}

ありがとう、ベン

4

2 に答える 2

5

メソッド参照 ( .NET ではデリゲートと呼ばれる) を参照するには、シグネチャではなくハンドラー名を使用します。

public class EventBuilder
{
    private static RoutedEventHandler _buttonClickHandler;

    public EventBuilder(RoutedEventHandler buttonClickHandler)
    {
        _buttonClickHandler = buttonClickHandler;
    }

    public static void EnableClickEvent()
    {
        myButton.Click += new RoutedEventHandler(_buttonClickHandler);
    }
}
于 2009-01-05T22:35:38.893 に答える
0

試す

private static delegate void(object sender, RoutedEventArgs e) _buttonClickHandler;
于 2009-01-05T22:35:32.873 に答える