程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 關於c#中的事件,

關於c#中的事件,

編輯:C#入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved