ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-09-13 14:04:13  阅读:190  来源: 互联网

标签:EventHandler 触发 ad public 理解 事件 Class 定义


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

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

定义事件触发需要如下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);
        }
    }
}
 

标签:EventHandler,触发,ad,public,理解,事件,Class,定义
来源: https://www.cnblogs.com/mkmkbj/p/16688876.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有