2012-03-13 4 views
7

GameButton이라는 레이블이있는 GameButton이라는 사용자 정의 컨트롤이 있습니다. 내 양식에 사용자 정의 컨트롤을 추가하고 클릭 이벤트를 추가하면 사용자 정의 단추의 배경을 클릭 할 때 트리거되지만 레이블의 텍스트는 클릭하지 않습니다. 어떻게하면 사용자 정의 컨트롤 코드 안에 많은 수의 클릭 이벤트를 추가하지 않고도이 문제를 해결할 수 있습니까?컨트롤 내의 텍스트를 클릭 할 때 사용자 컨트롤 클릭 이벤트가 작동하지 않습니까?

편집 : UI 프레임 워크 : 내가 제대로 이해하고있는 경우

+0

UI 프레임 워크 (윈폼은, WPF는 웹 양식, MVC)? –

+0

죄송합니다, – Oztaco

+0

는 또한 태그를 포함하여 피해주십시오 윈폼 (예 : visual-studio) –

답변

10

를 윈폼, 클릭했을 때,하지만 레이블에 클릭하지 않을 경우 이벤트가 발생됩니다 GameButton의 UserControl을 - 당신이 모두를 원한다. 이는 레이블 (컨트롤)이 배경 위에 있기 때문입니다. 따라서 클릭 이벤트에 레이블을 등록해야합니다. 이 작업은 디자이너에서 수동으로 수행하거나 페이지의 각 컨트롤에 대해 프로그래밍 방식으로 수행 할 수 있습니다. 당신은 UserControl을 모든 제어를 수행 할 경우

는 해당 UserControl의 OnLoad 이벤트에 이것을 넣고 당신은 모든 제어를 위해 같은 클릭 이벤트를 사용할 수 있습니다

foreach(Control c in this.Controls){ 
    c.Click += new EventHandler(yourEvent_handler_click); 
} 

public void yourEvent_handler_click (object sender, EventArgs e){ 
    //whatever you want your event handler to do 
} 

편집 : 가장 좋은 방법은을 만드는 것입니다 사용자 정의 컨트롤에서 이벤트 처리기 속성을 클릭합니다. 이렇게하면 사용자 컨트롤에 클릭 이벤트를 추가/제거 할 때마다 사용자 컨트롤 내의 모든 컨트롤에 자동으로 추가/제거됩니다. 이 도움이

희망 :

public new event EventHandler Click { 
     add { 
      base.Click += value; 
      foreach (Control control in Controls) { 
       control.Click += value; 
      } 
     } 
     remove { 
      base.Click -= value; 
      foreach (Control control in Controls) { 
       control.Click -= value; 
      } 
     } 
    } 

이것은 또 다른 post에 따라입니다!

+0

디자이너의 일반 단추로 수행하는 방식과 마찬가지로 사용자 지정 단추에 클릭 이벤트를 추가 할 수 있지만 레이블에는 영향을주지 않습니다. – Oztaco

+0

@EfeOzturkoglu를 잘 모르겠습니다. 사용자 정의 컨트롤을 마치 하나의 이벤트 핸들러로 어디서나 클릭 할 수있는 일반 버튼처럼 보이게할까요? – ImGreg

+0

예, 컨트롤에 핸들러를 추가하고 매번 레이블을 추가하고 싶지는 않지만 버튼의 새 인스턴스를 만들 때마다 한 번만 추가하십시오. – Oztaco

0

은 라벨의 "사용"속성이 "거짓, 다음 마우스 이벤트는 사용자 컨트롤에서 작동합니다.

관련 문제