• C# 实现自定义事件


    代码中实现了三个自定义事件,分别为自定义事件、自定义事件及自定义参数、使用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(thisnew EventArgs());
                }
            }
        }
        #endregion

         

    #region自定义事件,使用自定义事件参数
        /// <summary>
        
    /// 自定义事件参数
        
    /// </summary>
        public class CustomerEventArgs : EventArgs
        {
            public string CustomerMsg { getset; }
        }

        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(thisnew EventArgs());
            }
        }
        #endregion

    }

  • 相关阅读:
    python定义函数时的默认返回值
    【UNIX网络编程】配置unp.h和apueerror.h
    【UNIX网络编程】套接字编程简介
    【UNIX网络编程】概述
    【VSCode】Ubuntu下VSC编译运行c++程序
    【UNIX网络编程】传输层:TCP、UDP和SCTP
    nginx跨域配置
    centOS7.*安装nginx和简单使用
    nginx日志切割
    nginx静态资源防盗链
  • 原文地址:https://www.cnblogs.com/scottckt/p/2550440.html
Copyright © 2020-2023  润新知