第16章 事件
在第15章中学习了委托,委托是事件的基础,前一章是本章的铺垫。本章将学习C#事件。事件,对于初学者来说可能不易理解,但实际上我们已经在不知不觉地使用它了,而且“事件”在我们身边几乎无处不在。如果你使用过C#编写桌面应用程序,应该对代码清单16-1比较熟悉了。在这段代码中,可以进行窗体加载时的数据处理,例如数据准备工作。
代码清单16-1 事件示例代码
private void Form1_Load(object sender,EventArgs e)
{
}
如果你见到过这段代码,那就说明你已经接触过事件机制了,没有见过也没关系,本章将学习C#中的事件处理机制。
16.1 什么是事件
事件涉及两类角色:事件发布者和事件订阅者。当某个事件发生后,事件发布者会发布消息,事件订阅者会收到事件发生的通知,并做出相应处理,如图16-1所示。事件的触发可能源于用户和系统的交互(例如键盘按下、鼠标单击或者窗体加载等),也可能是由程序逻辑触发的。触发事件的对象称为事件发布者,捕获事件并对其做出响应的对象叫做事件订阅者。
图 16-1 事件的机制