C#의 다른 메소드에 대한 메소드 참조를 어떻게 전달합니까?
문제
메소드의 참조를 다른 방법으로 전달하고 변수로 저장하고 싶습니다. 나중에이 참조를 사용하여 이벤트 핸들러를 정의하고 싶습니다.
이벤트 핸들러를 만들 때 메소드 참조가 다음과 같이 전달됩니다.
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;
제휴하지 않습니다 StackOverflow