当前位置:编程学习 > asp >>

《.NET4.0 面向对象编程漫谈》读书笔记 ——第9章 事件及事件驱动

第9章 事件及事件驱动

【摘要】:事件驱动是面向对象软件系统的一个重要特征。本章介绍了.NET事件处理机制、自定义事件的基本方法以及WPF路由事件等。

第一节 .NET事件处理机制的剖析与应用

1、概念:从面向对象角度来说,事件是由对象发出的消息,它是一个信号,通知其他对象有事件发生。

            激发事件的对象称为事件源。对这个事件进行响应的对象称为响应者,响应者必须提供一个事件响应方法。

2、本质:事件与委托本质是一样的,但也有一些区别:

    A、使用委托时允许外界直接触发事件,而事件必须由事件源对象自己引发(间接引发)。

    B、以Delegate作为委托类型的后缀,以EventHandle作为事件委托的后辍,是规范的命名规则。

3、.NET的事件是observer模式在委托中的应用,并且基于.NET规范而实现,体现了更好的耦合性和灵活性。

4、在事件的应用中,可以实现在运行时动态性事件的响应方法,也可以实现一个方法响应多个对象的事件。

5、自定义事件的基本方法:

    A、创建一个事件专用委托,此委托定义了事件响应方法的签名。

    B、使用event关键字为对象定义一个事件字段。

    C、在合适的地方激发事件。

   使用时,准备好事件响应方法,并进行挂接。

第二节 WPF中的路由事件

1、 WPF的事件很有特色,它支持3种类型的事件。
      A、直接型事件:仅在一个事件源上激发,事件不会“扩散”和“传播”。
      B、隧道型事件:事件会自动在逻辑树中向下传播。如PreviewKeyDown,它从逻辑树根元素到事件源元素传播。
      C、冒泡型事件:事件会自动在逻辑树中“向上”传播。如MouseDown。它从事件源元素到逻辑树根元素传播。

2、附加事件:
     当父元素没有子元素特有的事件类型时,可以使用WPF的“附加事件”机制来响应子元素的路由事件。
     <Grid ButtonBase.Click = "GridButton_Click">
        ......
     </Grid>
     在Grid中可以放置多个按钮对象,使用附加事件,我们只需在一处地方定义一个事件响应方法即可。

3、键盘路由事件:
    A、PreviewKeyDown:隧道型,按下一个键时激发。
    B、KeyDown:冒泡型,同上
    C、PreviewTextInput:隧道型,按键结束,并且元素接收了按键所对应的字符(控制键不会激发此事件)
    D、TextInput:冒泡型,同上
    E、PreviewKeyUp:隧道型,按键松开时激发
    F、KeyUp:冒泡型,同上。
    即:隧道事件名前都有“Preview"做为标识。

    【小结】:.NET的事件模型建立在委托机制之上,事件是对委托的封装

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,