zoukankan      html  css  js  c++  java
  • C#事件以及EventHandler、EventArgs

    C#中事件的定义:

      类或者对象可以通过事件向其他类或者对象通知发生的相关事情。发送(或引起)事件的类称之为“发行者”,接收(或处理)事件的类称为“订户”。

    事件具有以下特点:

    • 发行者确定时间引发事件,订户确定执行何种操作来响应该事件。
    • 一个事件可以有多个订户。一个订户可处理来自多个发行者的多个事件。
    • 没有订户的事件永远不会被调用。
    • 事件通常用于通知用户操作,例如,图形用户界面中的按钮单击或菜单选择操作。
    • 如果一个事件有多个订户,当引发该事件时,会同步调用多个事件处理程序。要异步调用事件,请参见使用异步方式调用同步方法。
    • 可以利用事件同步线程。

    在.NET Framework类库中,事件是基于EventHandleEventArgs基类的。

    例如下面的代码:

    delegate void MyDele(string str)  //定义委托

    class Program

    {

      event MyDele MyEvent;  //定义事件

      static void Main(string[] args)

      {

        Program pro = new Program();

        //订阅方法

        pro.MyEvent += new MyDele(pro.MyMethod);

        pro.MyMethod("参数");

      }

      //定义委托方法

      public void MyMethod(string str)

      {

        Console.WriteLine("方法参数为:" + str);

      }

    }

    输出结果:

    方法参数为:参数1

    总结:

    C#中使用事件的要点

    1 首先,要创建委托,格式为:

    public delegate void 委托名(object sender,EventArgs e);

    注意:委托即C里面的函数指针,在事件中由于要传递事件及触发事件的对象信息,因此参数时固定的。委托名一般的格式是:名字+EventHandle。这样比较规范。

    2 然后建立一个事件字段:

    public event 委托类型 事件名;

    注意:event关键字代表事件,返回类型为委托;

    3 再定义一个方法,处理事件

    4 最后还要创建触发事件的方法

    在使用事件时,通常要定义两个方法,一个是和事件定义的委托签名一直的方法

    绑定事件的方法很简单,用+=表示添加事件,-=表示删除事件

    部分引用来自:http://wayfarer.cnblogs.com/archive/2004/04/20/6712.html

  • 相关阅读:
    智慧养老民政监管平台建设方案
    CF600E Lomsat gelral dsu on tree
    dsu on tree详解
    【Spring 从0开始】Spring5 新功能,整合日志框架 Log4j2
    【Spring 从0开始】JdbcTemplate 数据库事务管理
    【Spring 从0开始】JdbcTemplate 数据库事务参数
    【Spring 从0开始】JdbcTemplate 数据库事务管理
    【Spring 从0开始】JdbcTemplate 操作数据库
    【Spring 从0开始】AOP 操作
    【Spring 从0开始】AOP 操作中的相关术语、环境准备
  • 原文地址:https://www.cnblogs.com/DannyShi/p/4609257.html
Copyright © 2011-2022 走看看