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

  • 相关阅读:
    VSCode 预览 .md 文件
    ubuntu 16.04安装visual studio code 提示libnss3版本低:NSS >= 3.26 is required
    spring-tool-suite(STS) 创建 spring boot项目
    win10正式版开始菜单无法打开,右边的网络连接、操作中心也打不开
    nginx配置事例
    spring 集成 redis -- pub/sub
    springMVC--全局异常处理
    dubbo入门使用
    dubbo配置约束
    zookeeper安装与集群搭建
  • 原文地址:https://www.cnblogs.com/DannyShi/p/4609257.html
Copyright © 2011-2022 走看看