繁体   English   中英

C#事件和继承

[英]C# Events and Inheritance

我对C#和GUI事件很陌生,并且是新手。

我有一个基类:

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。 为什么?

使用此控件的窗体必须具有事件的处理程序。 就像是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM