关于EventHandler的使用

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: 小 | 中 | 大 | 超大  

也就是委托和事件的使用。使用过,但了解的不够深入,现在逐渐来填以前留下的坑吧。

EventHandler, EventHandler<TEventArg> 是.net Framework内部定义的两个委托.

从定义来看 ,后者是以泛型的形式来接收参数TEventArgs,可以是继承于EventArgs 的子类;

//摘要://表示将处理不包含事件数据的事件的方法。////参数://sender://事件源。////e://不包含任何事件数据的 System.EventArgs。[Serializable]

[ComVisible(true)]publicdelegatevoidEventHandler(objectsender, EventArgs e);//摘要://表示将处理事件的方法。////参数://sender://事件源。////e://一个包含事件数据的 System.EventArgs。////类型参数://TEventArgs://由该事件生成的事件数据的类型。[Serializable]publicdelegatevoidEventHandler<TEventArgs>(objectsender, TEventArgs e);

默认的System.EventArgs不包含参数,但我们可以通过继承在子类中添加我们需要的数据。

publicclassMyEventArgs : EventArgs

{publicstringmessage

{get;set;

}publicMyEventArgs(stringmess)

{

message=mess;

}

}

上例中:类MyEventArgs继承于System.EventArgs,同时也定义了一个string类型的message属性,用于接收数据。

现在在具体事例来使用 MyEventArgs类

publicclassDoTest

{publicDoTest() { }//定义事件publiceventEventHandler<MyEventArgs>DoWork;publicvoidBegin(stringval)

{if(DoWork !=null)

{

MyEventArgs e=newMyEventArgs(val);

DoWork(this, e);

}

}

}

classPRogram

{staticvoidMain(string[] args)

{

DoTest dos=newDoTest();

dos.DoWork+= (s, e) =>{

Console.WriteLine(e.message);

};

dos.Begin("1");

dos.Begin("2");

dos.Begin("3");

dos.Begin("4");

}

}

dos.DoWork 注册了匿名函数 ,功能是 输出显示 参数值message。

在调用Begin("1")函数,显示 1; 此时通过e.message就可得到传入的参数。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有