原文链接http://blog.csdn.net/joyhen/article/details/8500211

如有不明白的地方欢迎加QQ群14670545 探讨

最近在看委托,然后看到事件,以前一直很模糊,关于事件的触发者和响应者的关联。贴一个简单的例子:

1.新建一个类Control.cs

[csharp] view plaincopy

  1. using System;
  2. namespace EventComplex
  3. {
  4. /*
  5. * C#中的事件处理实际上是一种具有特殊签名的delegate
  6. */
  7. public class Control
  8. {
  9. /// <summary>
  10. /// 代表事件发送者
  11. /// </summary>
  12. /// <param name="sender">代表事件发送者</param>
  13. /// <param name="e">事件参数类
  14. /// <remarks>用来包含与事件相关的数据,所有的事件参数类都必须从System.EventArgs类派生</remarks>
  15. /// </param>
  16. public delegate void MyEventHandler(object sender, MyEventArgs e);//System.EventArgs e
  17. public event MyEventHandler MyEvent;
  18. public Control()
  19. {
  20. this.MyEvent += new MyEventHandler(RaiseSomeEvent);
  21. }
  22. /// <summary>
  23. /// 一个事件
  24. /// </summary>
  25. public void RaiseSomeEvent(object sender, MyEventArgs e)
  26. {
  27. Console.WriteLine("hello " + e.ParamName);
  28. Console.ReadLine();
  29. }
  30. public void RiseSomeEvent()
  31. {
  32. //System.EventArgs e = new System.EventArgs();
  33. Console.Write("Please input 'Name':");
  34. string _param = Console.ReadLine();//ReadLine:按下回车以后才读取,然后触发MyEvent事件
  35. //if (_param.Equals("jon"))//在用户输入jon的情况下触发事件,否则不触发
  36. MyEvent(this, new MyEventArgs(_param));//MyEvent(this,e)
  37. }
  38. }
  39. public class MyEventArgs : System.EventArgs
  40. {
  41. public string ParamName;
  42. public MyEventArgs(string _name)
  43. {
  44. ParamName = _name;
  45. }
  46. }
  47. }

2.我们去Main函数里面测试一下;

[csharp] view plaincopy

  1. public static void demo4()
  2. {
  3. Control ctr = new Control();
  4. ctr.MyEvent += new Control.MyEventHandler(ResponseSomeEvent);
  5. ctr.RiseSomeEvent();
  6. }
  7. public static void ResponseSomeEvent(object sender, EventArgs e)
  8. {
  9. Console.WriteLine("Some event occur!");
  10. }
[csharp] view plaincopy

  1. static void Main(string[] args)
  2. {
  3. demo4();
  4. }

(转)关于c#中的事件的更多相关文章

  1. C++中的事件分发

    本文意在展现一个C++实现的通用事件分发系统,能够灵活的处理各种事件.对于事件处理函数的注册,希望既能注册到普通函数,注册到事件处理类,也能注册到任意类的成员函数.这样在游戏客户端的逻辑处理中,可以非 ...

  2. javascript中的事件冒泡和事件捕获

    1.事件冒泡 IE 的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档).以下面的HTML ...

  3. jQuery文本框中的事件应用

    jQuery文本框中的事件应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  4. 怎么理解js中的事件委托

    怎么理解js中的事件委托 时间 2015-01-15 00:59:59  SegmentFault 原文  http://segmentfault.com/blog/sunchengli/119000 ...

  5. jQuery中的事件绑定方法

    在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知 ...

  6. 四、jquery中的事件与应用

    当用户浏览页面时,浏览器会对页面代码进行解释或编译--这个过程实质上是通过时间来驱动的,即页面在加载时,执行一个Load事件,在这个事件中实现浏览器编译页面代码的过程.时间无论在页面元素本身还是在元素 ...

  7. ActiveX(二)Js 监听 ActiveX中的事件

    在上一篇随笔:ActiveX(一)第一个简单的Demo 中,已经可以实现 js 单向调用 ActiveX 中的方法,在很多情况下ActiveX中的方法的执行时相对耗时.耗性能的.在这样的情况下.Act ...

  8. jQuery:详解jQuery中的事件(二)

    上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件.事件冒泡和事件移除等内容. 接上篇jQuery:详解jQuery中的事件(一) ...

  9. jQuery:详解jQuery中的事件(一)

    之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源.后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代 ...

  10. DOM中的事件对象

    三.事件对象事件对象event1.DOM中的事件对象(1).type:获取事件类型(2).target:事件目标(3).stopPropagation() 阻止事件冒泡(4).preventDefau ...

随机推荐

  1. Python3 如何优雅地使用正则表达式(详解一)

    注:本文翻译自 Regular Expression HOWTO,小甲鱼童鞋对此做了一些注释和修改. 正则表达式介绍 正则表达式(Regular expressions 也称为 REs,或 regex ...

  2. android中的margin和padding

    Android的Margin和Padding跟Html的是一样的.如下图所示:黄色部分为Padding,灰色部分为Margin. 通俗的理解: Padding 为内边框,指该控件内部内容,如文本/图片 ...

  3. .net反射详解

    前言 之所以要写这篇关于C#反射的随笔,起因有两个:   第一个是自己开发的网站需要用到   其次就是没看到这方面比较好的文章. 所以下定决心自己写一篇,废话不多说开始进入正题. 前期准备 在VS20 ...

  4. EntityFramework 插件之EntityFramework.Extended (批量处理)

    接手了一个用EF来做的项目,由于项目中使用的原生处理,导致很多update都是采用先select 后 update的方式来实现,同时无法批量执行逻辑如:根据订单类型统一更新状态等.所以在经过了N多查找 ...

  5. BZOJ1782: [Usaco2010 Feb]slowdown 慢慢游

    1782: [Usaco2010 Feb]slowdown 慢慢游 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 541  Solved: 326[Sub ...

  6. -_-#【Backbone】Collection

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. (转载)APC支持php5.4了

    (转载)http://www.neatstudio.com/archives/?article-2061.html 时隔一年多,APC终于又更新了,这次更新最大的就是支持PHP5.4:- Add PH ...

  8. Spring JDBC 随笔

    Spring 框架,借助 JdbcTemplate 类来简化 java 访问 database. 完成一个增查改删(CRUD)的基本功能,借助下面 5 个角色来共同来完成. 1. object cla ...

  9. mergeIDE

    Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDe ...

  10. Swift基础语法学习总结二

    1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需要指明类型,而如果没有返 ...