C#中允许用户自定义事件的信号发送与接收。
之前一直拘泥于委托delegate 与 invoke的语法细节,没有真的理解这个组合的实际用途,就是实现用户自定义事件。
A.cpp
Class A:Control
{
//先申明事件:
public delegate void DeleteEventHandler(List<string> nodenames);
//再定义一个DeleteEventHandler事件调用的对象:
public event DeleteEventHandler DeleteNodes;
public void func()
{
//在需要调用该事件的方法里通过句柄对象调用该事件:
DeleteNodes.Invoke(new List<string>(nodenames)); //相当于发送了DeleteEventHandler事件的发生信号。
}
}
B.cpp
在B类中申明A 对象,再对A的public事件进行监听,并设置相应的响应函数.
Class B : Form
{
public B()
{
A a_obj = new A();
this.Controls.Add(a_obj);
a_obj.DeleteNodes += this_DeleteEventHandler;//监听事件,并且设置响应函数
}
public void this_DeleteEventHandler(List<string> nodenames)
{
//捕获事件后,对其响应
}
}
当A的func方法被调用时就会发送事件发生信号,于是B中捕获事件后,响应事件的函数被执行。