你的位置:首页 > ASP.net教程

[ASP.net教程]关于c#中的事件


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

 

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

1.新建一个类Control.cs

 

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


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

 

 

  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.         }  

 

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