对事件触发(EventHandler)的简单理解

当某个对象的某个事件或者是执行过程发生了,这个对象可以通过事件通知另外一个对象,另外一个对象可以通过传递进来的参数进行相应的处理;

网上有很多关于事件触发的例子,借鉴其中的一个例子对事件触发做如下理解:

定义事件触发需要如下3步

一、事件参数Class定义

  1. 定义事件的参数

二、事件Class定义

1、定义一个事件对象

2、定义可以触发此事件的函数

三、使用Class定义

    1、定义事件处理函数

    2、定义一个事件Class变量

    3、对事件Class变量使用+=进行委托

    4、对事件Class变量调用可以触发此事件的函数

代码如下:

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

namespace ConsoleApplication1
{
    // 事件参数,继承类EventArgs
    public class AddEventData : EventArgs
    {
        public int a;
        public int b;
    }
    // 事件Class
    public class Test
    {
        // 事件对象
        public event EventHandler<AddEventData> OnAddEvent;
        // 触发事件
        public void CallAddEvent()
        {
            if (OnAddEvent != null)
            {
                AddEventData ad = new AddEventData();
                ad.a = 1;
                ad.b = 2;
                OnAddEvent(this, ad);
            }
        }
    }

   // 使用Class
    class Program
    {
        static void Main(string[] args)
        {
            Test tst = new Test();           
            tst.OnAddEvent += new EventHandler<AddEventData>(AddEvent);         
            tst.CallAddEvent();         // 触发事件            

            Console.Read(); // 暂停程序
        }
        // 事件处理函数
        static void AddEvent(object sender, EventArgs e)
        {
            AddEventData ad = (AddEventData)e;
            int c = ad.a + ad.b;
            Console.WriteLine("触发事件AddEvent, a+b={0}", c);
        }
    }
}

 

posted @ 2022-09-13 13:45  mkmkbj  阅读(760)  评论(0编辑  收藏  举报