《.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 ,