2013-06-02 3 views
0

"buttonAdd_Click"또는 "buttonSub_Click"또는 "buttonComp_Click"등과 같이 다른 문자열을 포함 할 수있는 clickEvent라는 문자열 변수가 있습니다. 이제 click 이벤트를 buttonCalc라고하는 버튼의 캐릭터 라인문자열에서 버튼으로 클릭 이벤트 할당

clickEvent가 변수이고 메소드가 아니기 때문에 buttonCalc.click + = new RoutedEventHandler (clickEvent)는 분명히 작동하지 않습니다.

어떻게하면이 기능을 사용할 수 있습니까?

감사

+0

왜 그렇게하고 싶습니까? –

답변

0

당신은 반사에 의해 그렇게 할 수 있습니다

private void AssignClickEvent(string methodName, Button button) 
{ 
    var method = this.GetType().GetMethod(methodName, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); 

    var ev = button.GetType().GetEvent("Click"); 

    var handler = method.CreateDelegate(typeof(RoutedEventHandler), this); 

    ev.AddEventHandler(button, handler); 
} 

는 그런 다음에 할당하고자하는 메소드의 이름과 버튼으로 전화 :

this.AssignClickEvent("ButtonAdd_Click", this.ButtonAdd); 

그 당신은 아마 당신이 이것을하는 이유를 설명하기를 원할지도 모릅니다.

+0

먼저 KooKiz에게 대답 해 주셔서 감사합니다. 나는 당신의 제안을 순간에 시도 할 수는 없지만 그것이 효과가 있다고 생각합니다. – Mices7

+0

내 요청의 의미에 관해서는 세 가지 즐겨 찾는 버튼 속성과 앱의 다른 페이지에있는 다른 버튼의 메소드를 지정해야합니다. 원래 버튼을 가볍게 두드리면서 컨텍스트 메뉴가 나타나면 어떤 컨트롤이 선택되었는지 알 수 있습니다. 이름, 배경, isenabled 등을 얻는 동안 이벤트 핸들러를 전송할 수 없었습니다 (리플렉션에 대해서는 생각하지 않았습니다). 다시 한번 감사드립니다. – Mices7

+0

리플렉션을 사용하지 않아도됩니다. 대리인을 사용하십시오. –

관련 문제