很多時候我們需要程序具有一種功能,就是當滿足某一條件時觸發某個動作,使用C#的事件機制就可以達到這個目的下面的例子是一個很好的演示,這段代碼實現了對一個變量的監視,一旦變量發生改變,就觸發動作
定義事件類:
- class Event
- {
- public delegate void tempChange(object sender, EventArgs e);
- public event tempChange OntempChange;
- string temp;
- public string Temp
- {
- get
- {
- return temp;
- }
- set
- {
- if (temp != value)
- {
- OntempChange(this, new EventArgs());
- }
- temp = value;
- }
- }
- }
分析:
要定義一個事件,首先聲明事件和委托
具體格式如下:
聲明委托
- public delegate void 事件句柄函數(object sender,EventArgs e);
object用來傳遞事件的發生者,EventArgs用來傳遞事件的細節
下面定義一個此委托類型類型的事件
- public event 事件句柄函數 事件名;
在這里,我定義了一個名為OntempChange的事件,並在屬性訪問器里設定當讀取值與原值不同時觸發該事件
使用事件(部分代碼):
- public partial class Form1 : Form
- {
- Event ven = new Event();
- public Form1()
- {
- ven.OntempChange += new Event.tempChange(ven_OntempChange);
- InitializeComponent();
- }
- void ven_OntempChange(object sender, EventArgs e)
- {
- MessageBox.Show(ven.Temp);
- }
- private void button1_Click(object sender, EventArgs e)
- {
- ven.Temp = textBox1.Text;
- }
在C#中,使用+=運算符將事件綁定給函數,在這里我把OntempChange事件綁定給了ven_OntempChange函數,在下面我定義了這個函數,在這個函數里設定了觸發事件之后執行的相關操作(注意函數的參數)實際的運行效果就是,在文本框內輸入字符,按下按鈕后,如果你輸入的值和上一次的不同,就會彈出對話框顯示這個值~