C# 實現自訂事件

來源:互聯網
上載者:User

代碼中實現了三個自訂事件,分別為自訂事件、自訂事件及自訂參數、使用Action自訂事件。

 

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AppMain
{
    /// <summary>
    /// 入口
    /// </summary>
    public class RunEventDemo
    {
        #region 用Action定義事件測試
        public void RunProgramThree()
        {
            EventDemoThree edth = new EventDemoThree();
            edth.CustomerEvent += new Action<object, EventArgs>(edth_CustomerEvent);
            //觸發事件
            edth.OnCustomerEvent();
        }

        void edth_CustomerEvent(object obj, EventArgs e)
        {
            Console.WriteLine("已調用Actiion執行的事件");
        }
        #endregion

        #region 使用自訂事件參數事件測試
        public void RunProgramTwo()
        {
            EventDemoTwo edt = new EventDemoTwo();
            edt.CustomerEvent += new EventDemoTwo.CustomerEventHander(edt_CustomerEvent);

            //建立事件參數
            CustomerEventArgs cea = new CustomerEventArgs();
            cea.CustomerMsg = " test";

            //觸發事件
            edt.OnCustomerEvent(cea);
        }

        void edt_CustomerEvent(object sender, CustomerEventArgs e)
        {
            Console.WriteLine("你傳入的參數值為:" + e.CustomerMsg);
        }

        #endregion

        #region 無參的自訂事件測試
        public void RunProgramOne()
        {
            //事件接收者
            EventDemoOne ed = new EventDemoOne();
            //4.註冊事件處理常式
            ed.customerEvent += new EventDemoOne.CustomerEventHander(RunDemo_customerEvent);
            //6.呼叫事件
            ed.OnEvent();
        }
        //5.編寫事件處理常式
        public void RunDemo_customerEvent(object sender, EventArgs e)
        {
            Console.WriteLine("test");
        }
        #endregion
    }

     

 

#region無參的自訂事件

    /// <summary>
    /// 無參的自訂事件
    /// </summary>
    public class EventDemoOne
    {
        //1.聲明關於事件的委託;
        public delegate void CustomerEventHander(object sender, EventArgs e);
        //2.聲明事件;   
        public event CustomerEventHander customerEvent;
        //3.編寫引發事件的函數;
        public void OnEvent()
        {
            if (this.customerEvent != null)
            {
                this.customerEvent(this, new EventArgs());
            }
        }
    }
    #endregion

     

#region自訂事件,使用自訂事件參數
    /// <summary>
    /// 自訂事件參數
    /// </summary>
    public class CustomerEventArgs : EventArgs
    {
        public string CustomerMsg { get; set; }
    }

    public class EventDemoTwo
    {
        public delegate void CustomerEventHander(object sender, CustomerEventArgs e);
        public event CustomerEventHander CustomerEvent;
        //3.編寫引發事件的函數,注意多了個參數;
        public void OnCustomerEvent(CustomerEventArgs e)
        {
            this.CustomerEvent(this, e);
        }
    }
    #endregion

     

#region使用Action自訂事件
    public class EventDemoThree
    {
        public event Action<object, EventArgs> CustomerEvent;
        public void OnCustomerEvent()
        {
            this.CustomerEvent(this, new EventArgs());
        }
    }
    #endregion

}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.