2009-01-05 75 views
0

我想将方法​​的引用传递给另一个方法,并将其作为变量存储。后来,我想用这个引用来定义一个事件处理程序。如何将方法引用传递给C中的另一种方法#

当进行事件处理程序,方法引用传递,如:

myButton.Click += new RoutedEventHandler(myButton_Click); 

而且如果你从智能感知的构造“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); 
    } 
} 

感谢, 本

回答

5

要引用一个方法引用(称为.NET中delegate),使用处理程序名称,而不是签名。

public class EventBuilder 
{ 
    private static RoutedEventHandler _buttonClickHandler; 

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

    public static void EnableClickEvent() 
    { 
     myButton.Click += new RoutedEventHandler(_buttonClickHandler); 
    } 
} 
+0

如果_buttonClickHandler已经是RoutedEventHandler,我不应该能够将它设置为像myButton.Click + = _buttonClickHandler? – 2009-01-05 22:51:01

0

尝试

private static delegate void(object sender, RoutedEventArgs e) _buttonClickHandler; 
相关问题