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。为什么?
这意味着没有人正在收听该事件。您错过了订阅活动? –
嗨Sriram,首先谢谢你。这就说得通了。我的派生类是否订阅了该事件或类CallingClass,它使用我的派生类,它是否由AnotherClass实例化,或者我的AnotherClass是否订阅了该事件?我希望有道理 – Allen