事件研究(一)

事件定义

        //
        // 摘要:
        // 在单击控件时发生。
        [SRCategory("CatAction")]
        [SRDescription("ControlOnClickDescr")]
        public event EventHandler Click;

事件订阅

this.button1.Click += new System.EventHandler(this.button1_Click);

事件委托类型

    // 摘要:
    // 表示将处理不包含事件数据的事件的方法。
    //
    // 参数:
    // sender:
    // 事件源。
    //
    // e:
    // 不包含任何事件数据的 System.EventArgs。
    [Serializable]
    [ComVisible(true)]
    public delegate void EventHandler(object sender, EventArgs e);

委托就等效于一个类型安全的函数指针或一个回调。虽然委托具有许多其他的用途,但这里只讨论委托的事件处理功能。

只有当事件生成事件数据时才需要自定义事件委托。 许多事件,包括一些用户界面事件(例如鼠标单击)在内,都不生成事件数据。 在这种情况下,类库中为无数据事件提供的事件委托 System.EventHandler 便足够了。

事件委托是多路广播的,这意味着它们可以对多个事件处理方法进行引用。 有关详细信息,请参见 Delegate。 委托考虑了事件处理中的灵活性和精确控制。 通过维护事件的已注册事件处理程序列表,委托为引发事件的类担当事件发送器的角色。

有关使用委托在您的组件或控件中提供事件功能的详细信息,请参见引发事件

    该文摘抄自msdn,定义事件的同时,可以自定义事件委托类型。假如给事件委托绑定了事件处理方法,当事件发生时事件处理方法的内容会被执行。

    例子使用的winform中的按钮事件代码。如果熟悉winform的开发,经过思考联系,应该能明白,事件大概运行思路。

原文地址:https://www.cnblogs.com/Tpf386/p/8081906.html