2013-07-20 5 views
0

나는 Label을 상속하는 클래스 StripButton을가집니다. 나는 onClick 메서드를 오버라이드 (override)했다. 이 클래스의 사용자는 onClick eventhandler에 이벤트를 할당합니다. 오버 라이딩 된 메서드가 마지막에 해고되는 것을 알았습니다. 오버라이드 된 메서드가 먼저 실행되기를 원합니다. 어떻게해야합니까?winform 구성 요소로 이벤트 처리

답변

1

처리기의 base.OnClick 메서드가 UserControl에서 호출되면 해당 양식의 StripButton 처리기가 실행됩니다 (Click). 따라서 Click 핸들러 코드가 양식에서 실행되기 전에 UserControl의 OnClick 코드를 실행하려면 UserControl의 OnClick 핸들러에서 base.OnClick을 호출하십시오. 반대로 양식의 Click 코드를 UserControl의 OnClick 코드 뒤에 실행하려면 UserControl의 OnClick 처리기에서 base.OnClick으로 먼저 호출하십시오.

그것은 간단한 예제를 설명하기 위해 아마도 가장 쉬운 방법 :

// Your UserControl. 
class StripButton : Label 
{ 
    protected override void OnClick(EventArgs e) { 
     Console.WriteLine("This runs before the Click handler on the parent form."); 
     base.OnClick(e); 
     Console.WriteLine("This runs after the Click handler on the parent form."); 
    } 
} 

// On your form. 
private void stripButton1_Click(object sender, EventArgs e) { 
    Console.WriteLine("stripButton1_Click on form"); 
} 

이를 실행하면 사용자가 출력 창에 다음을 볼 수 있습니다 : 귀하의 질문에 대한 대답

This runs before the Click handler on the parent form. 
stripButton1_Click on form 
This runs after the Click handler on the parent form. 

희망을.

+0

@riggs에 감사드립니다. –

관련 문제