Comment passer une référence de méthode à une méthode différente en C #
Question
J'aimerais passer une référence d'une méthode à une autre méthode et la stocker en tant que variable. Plus tard, j'aimerais utiliser cette référence pour définir un gestionnaire d'événements.
Lors de la création d'un gestionnaire d'événements, une référence de méthode est transmise telle que:
myButton.Click += new RoutedEventHandler(myButton_Click);
Et si vous examinez le constructeur de "RoutedEventHandler" de intelliSense, cela ressemble à:
RoutedEventHandler(void(object, RoutedEventArgs))
Ce que je voudrais faire est de transmettre la méthode "myButton_Click". à une méthode statique différente, puis créez un gestionnaire d'événements à cet endroit. Comment puis-je passer la référence à la méthode statique? J'ai essayé ce qui suit mais ça ne compile pas:
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);
}
}
Merci, Ben
La solution
Pour référencer une référence de méthode (appelée délégué dans. NET), utilisez le nom du gestionnaire plutôt que la signature.
public class EventBuilder
{
private static RoutedEventHandler _buttonClickHandler;
public EventBuilder(RoutedEventHandler buttonClickHandler)
{
_buttonClickHandler = buttonClickHandler;
}
public static void EnableClickEvent()
{
myButton.Click += new RoutedEventHandler(_buttonClickHandler);
}
}
Autres conseils
essayer
private static delegate void(object sender, RoutedEventArgs e) _buttonClickHandler;