转自:http://jimmyloveforever.blog.163.com/blog/static/119775247200951303935836/

1,C#事件机制是基于委托实现的,因此要首先定义一个委托EventHandler:

                       public delegate void EventHandler(object from , myEventArgs e) 

  System.EventArgs是包含事件数据的类的基类,在代码中可直接使用EventArgs类。
myEventArgs类派生于EventArgs类,实现自定义事件数据的功能。这里from表示发生事件的对象。 
2,定义事件格式为:

           event 事件的委托名 事件名 

如事件TextOut定义: 
     public event EventHandler TextOut; 
3,事件的激活一般写成: 
        if (TextOut != null) 
                   TextOut(this,new EventArgs()); 
 检查TextOut事件有没有被订阅,如不为null,则表示有用户订阅。订阅事件的是 
TestApp类,首先实例化EventSource,然后订阅事件: 
evsrc.TextOut += new  EventSource.EventHandler(CatchEvent); 
也可以取消订阅: 
evsrc.TextOut -= new  EventSource.EventHandler(CatchEvent);

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;// 定义事件包含数据
public class MyEventArgs : EventArgs
{private string StrText;public MyEventArgs(string StrText){this.StrText = StrText;}public string GetStrText{get{return StrText;}}
}
// 发布事件的类
class EventSource
{MyEventArgs EvArgs = new MyEventArgs("触发事件");// 定义委托 public delegate void EventHandler(object sender, MyEventArgs e);// 定义事件 public event EventHandler TextOut;// 激活事件的方法 public void TriggerEvent(){if (TextOut == null)TextOut(this, EvArgs);}
}
// 订阅事件的类
class TestApp
{public static void Main(){EventSource evsrc = new EventSource();// 订阅事件 evsrc.TextOut += new EventSource.EventHandler(CatchEvent);// 触发事件
        evsrc.TriggerEvent();Console.WriteLine("------");// 取消订阅事件 evsrc.TextOut -= new EventSource.EventHandler(CatchEvent);// 触发事件
        evsrc.TriggerEvent();Console.WriteLine("------");  // 事件订阅已取消,什么也不执行 TestApp theApp = new TestApp();evsrc.TextOut += new EventSource.EventHandler(theApp.InstanceCatch);evsrc.TriggerEvent();Console.WriteLine("------");}// 处理事件的静态方法 public static void CatchEvent(object from, MyEventArgs e){Console.WriteLine("CatchEvent:{0}", e.GetStrText);}// 处理事件的方法 public void InstanceCatch(object from, MyEventArgs e){Console.WriteLine("InstanceCatch:{0},e.GetStrText");}
}

转载于:https://www.cnblogs.com/anbylau2130/archive/2013/02/21/2920687.html

C#事件机制(记住流程)相关推荐

  1. 探究react的事件机制(合成事件)

    一.react的事件机制 react自身实现了一套事件机制,包括事件的注册.事件的存储.事件的合成及执行等. react 的所有事件并没有绑定到具体的dom节点上而是绑定在了document 上,然后 ...

  2. [wxWidget系列] wxWidget的事件机制

    wxWidget 的事件机制 wxWidget 通过在编译期生成静态的事件表来实现事件类的事件处理.所有想要使用事件处理机制的地方都需要继承 wxEvtHandler 类(直接或间接). 由于 win ...

  3. android 事件机制总结

    http://www.cnblogs.com/sunzn/archive/2013/05/10/3064129.html http://www.cnblogs.com/sunzn/archive/20 ...

  4. Spring事件机制

    一.事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方) ...

  5. React事件机制 - 源码概览(下)

    上篇文档 React事件机制 - 源码概览(上)说到了事件执行阶段的构造合成事件部分,本文接着继续往下分析 批处理合成事件 入口是 runEventsInBatch // runEventsInBat ...

  6. Android事件机制:事件传递和消费

     Android中的事件在表现形式上有很多,如onTach.onClick和onLongClick等,在具体微观上的表现形势有action_down.action_move和action_up等. ...

  7. 深入理解DOM事件机制

    前言 本文主要介绍: DOM事件级别 DOM事件流 DOM事件模型 事件代理 Event对象常见的方法和属性 一.DOM事件级别 针对不同级别的DOM,我们的DOM事件处理方式也是不一样的. DOM级 ...

  8. Android事件机制详解

    转自:http://www.codeceo.com/article/android-event.html 1概述 在Android平台上,主要用到两种通信机制,即Binder机制和事件机制,前者用于跨 ...

  9. click事件在什么时候出发_超全的js事件机制amp;事件委托

    超全的js事件机制&事件委托,想要理解js事件只需认真看完此篇即可~ 目录结构: 什么是事件机制 事件冒泡事件捕获 DOM事件流事件委托 误区 在同一个对象上注册事件,并不一定按照注册顺序执行 ...

最新文章

  1. umi3 如何管理model_django admin 管理工具
  2. 通过这个故事理解啥是 NIO
  3. Http 与 Socket 区别
  4. hdu 1404/zoj 2725 Digital Deletions 博弈论
  5. csdn的博客文化真好
  6. python日志汇总
  7. javaparser_JavaParser入门:以编程方式分析Java代码
  8. 猎豹MFC--文件对话框CFileDialog
  9. android handler内存,Android handler之内存泄露原因揭示
  10. 【WEB基础】HTML CSS 基础入门(2)选取工具:VS2019安装使用
  11. vmware-tools for LFS
  12. mysql phpwind_Linux Apache php MySQL GD PHPWind 集成环境配置
  13. 测试用例(等价类划分法)
  14. 云计算机怎么给学生机安装软件,如何在云计算机服务器中安装学生机应用程序? 在云计算机服务器中安装学生机应用程序的方法?...
  15. linux du命令使用
  16. oracle中的||是什么意思?
  17. 0xE06D7363: Microsoft C++ Exception.
  18. matlab示波器有功功率,巧用示波器计算功率
  19. 飘了,英特尔2年内要发布高效芯片超过苹果M1
  20. python strip 函数用法及介绍

热门文章

  1. 告别程序员生涯,一点感慨,与诸君共勉(转)
  2. Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
  3. RUNOOB python练习题9 如何在代码中加入砸瓦鲁多
  4. 剖析ASSERT函数
  5. MySQL日期时间函数大全(转)
  6. [转]关于java 内存泄露
  7. 编写安全 PHP 应用程序的七个习惯
  8. 小议程序员编写技术文档
  9. 搜索引擎优化学习原理_如何使用数据科学原理来改善您的搜索引擎优化工作
  10. 深入理解InnoDB(8)—单表访问