事件研究(一)

weixin_30896511發表於2017-12-21

 

事件定義

        //
        // 摘要:
        // 在單擊控制元件時發生。
        [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

相關文章