2014-03-13 3 views
1

저는 C# 및 GUI 이벤트 전반에 익숙하지 않고 매우 익숙하지 않습니다. 내가 디버거를 통해 내 코드를 실행C# 이벤트 및 상속

public partial class BaseClass : UserControl 
{ 
    private event DataChangeEventHandler mDataChangeEvent; 
    public event DataChangeEventHandler DataChange 
    { 
    add 
    { 
     mDataChangeEvent += value; 
    } 
    remove 
    { 
     mDataChangeEvent -= value; 
    } 
    } 
    } 

    public delegate void DataChangeEventHandler(object sender, EventArgs e); 

    ... 
    ... 

    protected virtual void Control1_SelectedValueChanged(object sender, EventArgs e) 
    { 
    //some code do something 
    if(mDataChangeEvent != null) 
    { 
     EventArgs e = new EventArgs(); 
     mDataChangeEvent(this, e); 
    } 
    } 
} 
// derived class 
public partial class DerivedClass : BaseClass 
{ 
... 
... 
    protected override void Control1_SelectedValueChanged(object sender, EventArgs e) 
    { 
    base.Control1_SelectedValueChanged(sender, e); 
    } 
} 

:

나는 기본 클래스가 있습니다. 내 드롭 다운 컨트롤을 다른 값으로 변경할 때마다 내 파생 클래스 'Control1_SelectedValueChanged에서 중단 점을 누른 다음 기본 클래스'Control1_SelectedValueChanged를 호출합니다. 다만, mDataChangeEvent는 null입니다. 왜?

+2

아무도 그 이벤트를 듣지 않는다는 의미입니다. 이벤트 구독을 놓친 적이 있습니까? –

+0

안녕하세요. Sriram, 먼저 감사드립니다. 그건 의미가 있습니다. 내 파생 클래스가 AnotherClass에 의해 인스턴스화되었거나 AnotherClass가 해당 이벤트에 가입 한 파생 클래스를 사용하는 해당 이벤트 또는 CallingClass 클래스를 구독합니까? 나는 이해가 되길 바란다. – Allen

답변

1

이 컨트롤을 사용하는 폼에는 이벤트에 대한 처리기가 있어야합니다. 예 :

BaseClass baseClass = new BaseClass(); 
baseClass.DataChange += <EventHandlerHere>