Allen
Allen

Reputation: 181

C# Events and Inheritance

I am very raw and new to C# and GUI events in general.

I have a base class:

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);
  }
}

I ran my code through the debugger. Whenever I change my dropdown control to another value, it will hit break point on my derive class' Control1_SelectedValueChanged then call the base class' Control1_SelectedValueChanged. However, mDataChangeEvent is null. Why?

Upvotes: 1

Views: 310

Answers (1)

danish
danish

Reputation: 5600

The form that uses this control has to have a handler for the event. Something like:

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

Upvotes: 1

Related Questions