事件概述(Windows 窗体)

事件是在代码中可以响应或“处理”的操作。 事件可由用户操作生成,例如单击鼠标或按键;按程序代码;或由系统。

事件驱动的应用程序执行代码以响应事件。 每个窗体和控件都会公开一组预定义的事件,你可以针对这些事件进行编程。 如果其中一个事件发生,并且关联的事件处理程序中有代码,则会调用该代码。

对象引发的事件类型会有所不同,但大多数控件通常有许多类型。 例如,大多数对象将处理 Click 事件。 如果用户单击窗体,则执行窗体 Click 事件处理程序中的代码。

注释

许多事件与其他事件一起发生。 例如,在发生 DoubleClick 事件的过程中,会发生 MouseDownMouseUpClick 事件。

有关如何引发和使用事件的信息,请参阅事件

代表及其角色

委托是 .NET Framework 中通常用于生成事件处理机制的类。 委托大致等同于函数指针,通常用于 Visual C++ 和其他面向对象的语言。 但与函数指针不同的是,委托是面向对象的、类型安全的和保险的。 此外,如果函数指针仅包含对特定函数的引用,委托包含对对象的引用,以及对该对象中的一个或多个方法的引用。

此事件模型使用 委托 将事件绑定到用于处理事件的方法。 委托允许其他类通过指定处理程序方法来注册事件通知。 当发生事件时,委托会调用绑定的方法。 有关如何定义委托的详细信息,请参阅事件

委托可绑定到单个方法或多个方法,后者又称为多路广播。 当创建事件的委托时,你(或 Windows)通常会创建多播事件。 极少的例外情况是,某个事件会导致特定过程(例如显示对话框),而该过程在逻辑上不在每个事件中重复多次。 有关如何创建多播委托的信息,请参阅如何合并委托(多播委托)

多路广播委托维护它所绑定到的方法的调用列表。 多播委托支持一个 Combine 方法用于向调用列表添加方法,以及一个 Remove 方法用于从中删除方法。

当应用程序记录某个事件时,该控件将通过调用该事件的委托引发事件。 委托依次调用绑定的方法。 最常见的情况(多路广播委托)是,委托依次调用调用列表中的每个绑定方法,这样可提供一对多通知。 此策略意味着控件不需要维护事件通知的目标对象列表,委托将处理所有注册和通知。

委托还允许将多个事件绑定到同一个方法上,从而允许多对一通知。 例如,按钮单击事件和菜单命令单击事件都可以调用相同的委托,然后调用单个方法以相同的方式处理这些单独的事件。

与委托一起使用的绑定机制是动态的:委托可在运行时绑定到其签名与事件处理程序的签名相匹配的任何方法上。 使用此功能,可以根据条件设置或更改绑定方法,并动态将事件处理程序附加到控件。

另请参阅