事件的前身是消息(Message)。消息本质就是一条数据,这条数据里记载着消息的类别,必要的时候还记载一些消息参数(如WM_LBUTTONDOWN消息所携带的参数——鼠标单击处的X、Y坐标),也有些消息是不用携带参数的(如按钮被单击的消息——程序员并不关心鼠标点在按钮的哪个位置上了)。
随着微软面向对象开发平台日趋成熟,微软把消息机制封装成了更容易让人理解的事件模型。事件模型隐藏了消息机制的很多细节,消息驱动机制在事件模型中被简化为3个关键点:
事件的拥有者:即消息的发送者。事件的宿主可以在某些条件下激发它拥有的事件,即事件被触发。事件被触发则消息被发送。
事件的响应者:即消息的接收者、处理者。事件接收者使用其事件处理器(Event Handler)对事件做出响应。
事件的订阅关系:事件的拥有者可以随时激发事件,但事件发生后会不会得到响应要看有没有事件的响应者(事件是否被关注)。
事件的响应者通过订阅关系直接关联在事件拥有者的事件上,为了与WPF的路由事件模型区分开,把这种事件模型称为直接事件模型或者CLR事件模型。在CLR直接事件模型中,事件的拥有者就是消息的发送者(sender)。
- Windows消息机制中重要概念之一,最常见的人机交互手段之一
- XAML帮助应用管理用户输入,执行不同的行为
- 引入增强型事件处理系统-Routed Event(路由事件)
- 事件常常被用于控制更改通知操作
C#事件的基础语法