[英]C# Events and Inheritance
I am very raw and new to C# and GUI events in general. 我对C#和GUI事件很陌生,并且是新手。
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. 每当我将下拉控件更改为另一个值时,它将在派生类的Control1_SelectedValueChanged上达到断点,然后调用基类的Control1_SelectedValueChanged。 However, mDataChangeEvent is null. 但是,mDataChangeEvent为null。 Why? 为什么?
The form that uses this control has to have a handler for the event. 使用此控件的窗体必须具有事件的处理程序。 Something like: 就像是:
BaseClass baseClass = new BaseClass();
baseClass.DataChange += <EventHandlerHere>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.