C# 事件与继承
一般来说,我对C#和GUI事件非常陌生 我有一个基本类:C# 事件与继承,c#,events,inheritance,C#,Events,Inheritance,一般来说,我对C#和GUI事件非常陌生 我有一个基本类: public partial class BaseClass : UserControl { private event DataChangeEventHandler mDataChangeEvent; public event DataChangeEventHandler DataChange { add { mDataChangeEvent += value; } remove
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\u SelectedValueChanged”上达到断点,然后调用基类“Control1\u SelectedValueChanged”。但是,mDataChangeEvent为null。为什么?使用此控件的窗体必须具有事件的处理程序。比如:
BaseClass baseClass = new BaseClass();
baseClass.DataChange += <EventHandlerHere>
BaseClass BaseClass=new BaseClass();
baseClass.DataChange+=
这意味着没有人在收听该事件。你错过了订阅活动?嗨,斯里拉姆,首先谢谢你。这是有道理的。我的派生类是订阅那个事件还是调用我的派生类的类,顺便问一下,它是由另一个类实例化的,还是我的另一个类订阅那个事件?我希望有意义