您的位置:首页 > 编程语言 > C#

C# 实现自定义事件

2013-12-27 20:01 387 查看
代码中实现了三个自定义事件,分别为自定义事件、自定义事件及自定义参数、使用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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: