首页 > 技术文章 > 事件与委托

xianyuxihuamao 2017-11-28 11:13 原文

 

1.事件与委托的紧密联系

class A
{
        //声明委托类型
        public delegate void ConfigHandler(int index,string path);
        //声明事件
        public event ConfigHandler ConfigEvent;
     
 }  

如上,我声明了一个委托类型,此类型有两个参数,最后声明一个ConfigHandler类型的事件,虽然定义好委托与事件,如何执行事件,

我们可以给执行事件封装一个方法,如下代码:到时只需要使用MyConfigEvent方法就能执行事件,并通知已经订阅该事件的对象。

private void MyConfigEvent(int index,string path)
{
  if (ConfigEvent != null)
  {
    ConfigEvent(index, path);
  }
}

2.订阅事件

A a=new A()
a.ConfigEvent+=new ConfigHandler(aa)
//a.ConfigEvent-=new ConfigHandler(aa)//取消事件

订阅事件的方法要和定义好的委托类型一致,

public void aa(int index,string path)
{
MessageBox.Show(
"事件通知触发"); }

以后每次MyConfigEvent方法执行一次就要触发一次事件,并且通知aa方法。第一次写不太会,见解。

推荐阅读