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 回答