网站大量收购闲置独家精品文档,联系QQ:2885784924

《C#net程序设计课件》(资料全集)c#7.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C#net程序设计课件》(资料全集)c#7

第七章 委托与事件、泛型和反射 本章主要内容 委托与事件 泛型类,结构,接口和泛型成员 可空类型 反射获取和加载程序集,反射获取类型及其成员,调用实例方法 委托 委托delegate是一种引用数据类型,委托的对象实例中存放的是方法的引用。 调用委托时,它可以调用多个方法。这称为多路广播。若要向委托的方法列表(调用列表)中添加额外的方法,只需使用加法运算符或加法赋值运算符(“+”或“+=”)添加两个委托。若要从调用列表中移除方法,使用减法运算符或减法赋值运算符(“-”或“-=”)。 下面通过实例演示使用加法运算符“+”向委托的方法列表中添加额外的方法,以及使用减法运算符“-” 从调用列表中移除方法。 事件概述 事件是类在发生其关注的事情时用来提供通知的一种方式。引发事件的对象称为事件的源或发送者。对象引发事件的原因很多:例如按钮单击或菜单选择等。 事件具有以下特点: 事件是用来通知对象需要执行某种操作的方式。 事件通常用在图形用户界面中。 事件通常使用委托事件处理程序进行声明。 事件可以调用匿名方法来替代委托。 使用事件 使用事件步骤是:声明事件委托类型定义、引发事件类定义和接受事件类订阅事件。 声明事件委托类型 事件和方法一样具有签名,签名包括名称和参数列表。事件的签名通过委托类型来定义,因此首先为事件声明一个委托,如: public delegate void ChangedEventHandler(object sender, EventArgs e); .NET 框架中事件的签名中,通常第一个参数为引用事件的源对象,第二个参数为一个传送与事件相关的数据对象。并不强制使用这种形式,只要事件签名返回 void。 使用事件 在事件发送类中添加事件,需要使用event关键字,并提供委托类型和事件名称。例如: public event ChangedEventHandler Changed; 引发事件类定义 若要引发事件,类可以调用委托,并传递所有与事件有关的参数。然后,委托调用已添加到该事件(如上例的Changed事件)的所有处理程序。例如下面代码中:Changed(this, e); 使用事件 接受事件类订阅事件 要接收某个事件的类(如下面EventListener)可以创建一个方法来接收该事件,接收类必须具有与事件具有相同签名(如委托签名)的方法,该方法(称为事件处理程序)可以采取适当的操作来响应该事件,下例为ListChanged方法。然后向引发事件类实例的事件使用+=添加该方法的一个委托。即下例的List.Changed += new ChangedEventHandler(ListChanged);这个过程称为“订阅事件”。 使用事件 在类Test主函数Main()中创建引发事件类实例和接受事件类实例,代码如下: class Test { // 测试 ListWithChangedEvent 类。 public static void Main() { // 创建新列表,引发事件类实例。 ListWithChangedEvent list = new ListWithChangedEvent(); // 创建一个类,用于侦听列表的更改事件。 EventListener listener = new EventListener(list); list.Add(item 1);// 在列表中添加项。触发事件显示事件触发 listener.Detach();// 分离事件,之后不再处理事件. list.Add(item 2);// 在列表中添加项。不显示事件触发 }} .NET框架事件的委托类型 .NET框架用于事件的委托类型采用两个参数:“对象源”参数(用于指示事件源)和特定于事件的参数(它封装有关事件的其他任何信息)。特定于事件的参数应从 EventArgs 类派生。对于不使用任何附加信息的事件,.NET框架 提供了 EventHandler 委托类型: public delegate void EventHandler (Object sender, EventArgs e); 因此前面例子的事件委托类型ChangedEventHandler可将其更改为EventHandler 委托类型,从而符合NET 框架的事件准则。 Windows应用程序事件处理机制 下面解释第一章WelcomeWorld项目的form1.cs使用按钮事件的处理机制: 用来定义按钮事件的委托类型是.Net框架定义的委托: public delegate void EventHandle

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档