2015-01-29 2 views
0

안녕하세요 저는 C++에 대해 거의 새로운 편이니까요. 보통 C++로 프로그램하므로 제발 참아주십시오. 나는 응용 프로그램을 코딩 오전 및 나는 실제로 같은 일을하고있는 5 중 10 단추가 있습니다. 현재 동일한 일을하는 5 개의 이벤트 핸들러가 있습니다. if 문을 사용하여 단일 짝수 처리기로 어떻게 변경할 수 있습니까? 버튼 copared다중 버튼을위한 단일 이벤트 핸들러 설정

버튼 1~5 버튼 2 비교 버튼 6 버튼 3 copmpared : 또한 내 문제는 각 버튼의 방법이 동일한 경우에도 후술하는 바와 같이 전 하나에서 다른 약간의 작은 차이가있을 수 있다는 것이다 버튼 7 등등

어떻게이 작은 차이를 각 경우에 다룰 수 있습니까?

고마워요 너무

+0

WPF? Winform? WPF가 MVVM과 ICommand를보아야한다면 각 버튼을 동일한 명령에 바인드하고 CommandParameter를 전달하여 마녀 버튼에서 알 수 있습니다. – rducom

답변

2
button.SomeEvent += SomeHandler 

void SomeHandler(object sender, EventArgs e) 
{ 
    Button b = (Button)sender; //get the specific button that was pressed 
    ... 
} 

이벤트하는 방법을 추가 단순히 동일한 방법을 추가 + = 연산자를 사용한다.

+0

이벤트가 코드 숨김 대신 디자이너에서 선언/할당되어야한다고 말하면이 코드를 변경하지만 동일한 결과가 생성됩니다. –

+0

@JoeBrunscheon - 이유가 무엇입니까? 차이가 없다면 왜 중요할까요? – Hogan

+0

이유가 중요하지 않습니다. – Stilgar

0

모두 동일한 처리기로 설정하고 호출 한 단추를 가져와 if 문에서 id를 확인한 다음 다른 작업을 수행 할 수 있습니다. 또는 다음과 같은 훨씬 일반적인 리팩터를 사용할 수 있습니다.

void Button1Action(object sender, EventArgs e) 
{ 

    // do stuff for button 1 here 

    SharedCode(); 
} 

void Button2Action(object sender, EventArgs e) 
{ 

    // do stuff for button 2 here 

    SharedCode(); 
} 

void Button3Action(object sender, EventArgs e) 
{ 

    // do stuff for button 3 here 

    SharedCode(); 
} 


void Button4Action(object sender, EventArgs e) 
{ 

    // do stuff for button 4 here 

    SharedCode(); 
} 

void SharedCode() 
{ 

    // do stuff for all buttons 

}