2009-07-15 4 views

답변

1

질문이 명확하지 않습니다. 상속 된 컨트롤에서 기본 클래스의 이벤트를 처리하려고한다고 가정 할 때 On EventName 보호 된 가상 메서드를 재정의 할 수 있습니다. 오버라이드에서는 기본 메서드를 호출해야합니다. 그렇지 않으면 이벤트가 실행되지 않습니다.

이 메서드는 System.Windows.Forms의 모든 컨트롤에있는 모든 이벤트에 대해 존재합니다 (AFAIK). 상속 한 컨트롤에이 가상 메서드가 없으면 생성자의 vent에 구독 할 수 있습니다. 예를 들어

:

class MyButton : Button { 
    //First way 
    protected override void OnClick(EventArgs e) { 
     base.OnClick(e); //Without this line, the event won't be fired 
     //... 
    } 


    //Second way 
    public MyButton() { 
     base.Click += Base_Click; 
    } 

    void Base_Click(object sender, EventArgs e) { 
     //... 
    } 
} 

편집 :

당신은 기본 클래스 '이벤트를 발생하려는 경우, 당신은 EventName을 방법에 다음을 호출 할 수 있습니다.

기본 클래스에없는 경우 새 이벤트를 선언하고 새 이벤트를 발생시키는 기본 클래스의 원래 이벤트에 처리기를 추가해야합니다. 기본 클래스의 이벤트를 사용하는 다른 코드가 있고 evnet이 virtual이 아니며 발 행자 메소드가없는 경우 기본 clas를 디 컴파일하고 이벤트가 어디에 있는지 알아낼 수 없다면 운이 없어진 것입니다 제기된다.

1

WinForms의 이벤트에는 일반적으로 해당 "On *"메서드가 있습니다. 이 메소드를 호출하면 이벤트가 발생합니다. 예를 들어 "CellClick"을 올리려면 "base.OnCellClick (new DataGridViewCellEventArgs (row, column))"을 호출하십시오.

+0

+1 이것은 내가 찾고있는 대답이었습니다. –

관련 문제