문제

메소드의 참조를 다른 방법으로 전달하고 변수로 저장하고 싶습니다. 나중에이 참조를 사용하여 이벤트 핸들러를 정의하고 싶습니다.

이벤트 핸들러를 만들 때 메소드 참조가 다음과 같이 전달됩니다.

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

감사합니다, 벤

도움이 되었습니까?

해결책

메소드 참조를 참조하기 위해 (a 대리자 .NET)에서 서명 대신 핸들러 이름을 사용하십시오.

public class EventBuilder
{
    private static RoutedEventHandler _buttonClickHandler;

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

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

다른 팁

노력하다

private static delegate void(object sender, RoutedEventArgs e) _buttonClickHandler;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top