閱讀目錄
一:事件概述
二:ASP.NET中的事件
三:執行個體
四:運行效果
一:事件概述
Windows作業系統啟動的時候,要載入硬體,載入硬體驅動,載入軟體等等,啟動以後只要你不點擊它,它就沒有任何的反應,當你單擊“開始”菜單的時候,就會彈出一個菜單來,大部分的程式都是面向事件驅動的,什麼是事件驅動呢?就是由外界觸發的,事件就是一個訊號,它告知應用程式有重要的情況發生。
C#中使用事件的步驟
1:建立一個委託
2:建立一個事件,將建立的事件或者特定的事件和建立的委託關聯起來聯
3:編寫事件處理常式
4:利用編寫的事件處理常式產生一個委託執行個體
5:把這個委託執行個體添加到產生事件對象的事件列表當中去,這個過程叫做訂閱事件
二:ASP.NET中的事件
ASP.NET主要支援3個事件租
2.1:在ASP.NET產生頁面時自動發生
比如:頁面載入的時候
protected void Page_Load(object sender, EventArgs e)
{
}
2.2:使用者與頁面互動時所發生的事件
比如:單擊頁面上的一個按鈕也就是Web伺服器控制項所帶的一些自己的事件
protected void btnAdd_Click(object sender, EventArgs e)
{
}
2.3:html內部的事件,這些事件在瀏覽器上執行
就是javascript實現的那些事件
所有的Web伺服器端控制項都可以添加兩個事件,用戶端事件,伺服器端事件,用戶端事件由瀏覽器解釋執行的,伺服器端事件要傳到伺服器執行的。
三:執行個體
1 //step1 建立一個委託 2 public delegate void MessageHandler(string message); 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 Connection conn = new Connection(); 8 Display display = new Display(); 9 //step4 'new MessageHandler(display.DiaplayMessage)'表示利用編寫的事件處理常式產生一個委託執行個體
//step5 '+='表示事件的預定,'conn.MessageArrived'表示添加什麼到產生事件對象的事件列表當中去,合起來解釋就是把這個委託執行個體添加到產生事件對象的事件列表當中去,這個過程叫做訂閱事件,委託就是代理,我們可以這樣理解,委託就是把一個事件處理函數和一個事件關聯起來
10 conn.MessageArrived += new MessageHandler(display.DiaplayMessage);11 conn.Connect();
12 Console.ReadKey();
13 }
14 15 public class Display16 {17 public string strMessage;18 public Display()19 {20 21 }22 /// <summary>23 /// step3 編寫事件處理常式24 /// </summary>25 /// <param name="message"></param>26 public void DiaplayMessage(string message)27 {28 strMessage = message;29 Console.WriteLine("訊息到達:{0}", strMessage);30 }31 }32 }33 34 public class Connection35 {36 //step2 建立一個事件名稱叫'MessageArrived',將建立的事件或者特定的事件和建立的委託關聯起來37 public event MessageHandler MessageArrived;38 private Timer polltimer;//聲明一個timer39 public Connection()40 {41 polltimer = new Timer(100);//一百毫秒42 //流失事件43 polltimer.Elapsed += new ElapsedEventHandler(CheckForMessage);44 }45 46 public void Connect()47 {48 polltimer.Start();49 }50 51 /// <summary>52 /// 53 /// </summary>54 /// <param name="sender"></param>55 /// <param name="e"></param>56 public void CheckForMessage(object sender, ElapsedEventArgs e)57 {58 Random random = new Random();59 //在時間流失的過程中如果產生的隨機數正好是9的話,我們就輸出一個訊息60 if ((random.Next(9)==0) && (MessageArrived != null))61 {62 //MessageArrived("你好")實際執行的是DiaplayMessage()方法63 MessageArrived("你好");64 }65 }66 }
四:運行效果