2009-01-05 68 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; 
相關問題