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

C#基礎概念之事件

編輯:C#入門知識

 事件,是C#編程模型中重要的一個概念,通過對事件的理解,可以更好的了解C#程序運行機制。C#中的事件,可以簡單的理解為類或者對象發生了一件事,並且把這件事通知給了其他的類或者對象,其他的類或者對象可以根據事件的消息有所反應。這非常類似設計模式中的觀察者模式。

引發事件的類或對象,可以稱之為事件源,注冊並對處理事件的類或者對象可以稱為事件訂閱者或者事件監聽者,我比較喜歡稱之為事件監聽者。

比如:構建一個winform應用,在窗體Form1簡單放置一個按鈕控件,然後,雙擊按鈕,則可以進入代碼視圖中按鈕click事件處理程序。

   private void button1_Click(object sender, EventArgs e)
{
///sender即表示事件源,e表示通過事件傳遞過來的消息
}

 這時,還可以打開Form1.designer.cs,還可以找到如下代碼:

this.button1.Click += new System.EventHandler(this.button1_Click);

這行代碼表明,當前窗體注冊了click事件(click就是Button對象的一個事件),並且用 button1_Click方法進行了處理。EventHandler是一個委托,關於委托可參見我的上一篇文章html">C#基礎概念之委托

以上是對C#事件的一些簡單的解釋。當然,我們也可以自定義事件。

自定義事件,分為如下幾步:

第一步:首先在事件源對象定義事件 

 //定義事件
public event EventHandler myevnet;
第二步:在事件監聽者,訂閱事件
  //事件注冊
this.myevnet+=new EventHandler(MyEventHandler);

第三步:在事件監聽者,編寫事件處理代碼:

  /// <summary>
/// 事件的處理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MyEventHandler(object sender, EventArgs e)
{
MessageBox.Show("myevent is raised.......");
}

第四步:在事件源對象引發事件 

 //判斷事件是否被注冊
if (myevnet != null)
{
//引發事件
myevnet(this.button1, new EventArgs());
}

 這僅是個演示,供各位參考,下面給出完整代碼,方便測試

簡單自定義事件,完整代碼
 1     public partial class Form1 : Form
2 {
3 //定義事件
4   public event EventHandler myevnet;
5
6 public Form1()
7 {
8 InitializeComponent();
9 //事件注冊
10   this.myevnet+=new EventHandler(MyEventHandler);
11
12 }
13
14
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved