Как передать ссылку на метод в другой метод в C # - PullRequest
0 голосов
/ 06 января 2009

Я хотел бы передать ссылку на метод в другой метод и сохранить его как переменную. Позже я хотел бы использовать эту ссылку для определения обработчика событий.

При создании обработчика события ссылка на метод передается следующим образом:

myButton.Click += new RoutedEventHandler(myButton_Click);

И если вы посмотрите на конструктор для "RoutedEventHandler" из intelliSense, он будет выглядеть так:

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

Спасибо, Ben

Ответы [ 2 ]

5 голосов
/ 06 января 2009

Для ссылки на ссылку на метод (которая называется делегатом в .NET), используйте имя обработчика, а не подпись.

public class EventBuilder
{
    private static RoutedEventHandler _buttonClickHandler;

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

    public static void EnableClickEvent()
    {
        myButton.Click += new RoutedEventHandler(_buttonClickHandler);
    }
}
0 голосов
/ 06 января 2009

1001 * попробовать *

private static delegate void(object sender, RoutedEventArgs e) _buttonClickHandler;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...