關於自訂事件的一點體會
來源:互聯網
上載者:User
今天在msdn上搜尋文章的時候無意中看到一個涉及 自訂事件 的部分,整天用到的基本都是windows開發環境下Ide的內建事件,比如click什麼的,一時竟沒看懂,回頭翻書查了查,才稍微理解了,並加深了印象。雖然以前在java裡也用過事件,但在c#裡事件必須先定義委託,一時比較亂,整理一下先。
首先定義一個事件的函數簽名(參數的格式)--代理
public delegate void ComputeSalaryCallback(string EmpID,double Salary);
在類型中宣告類型所包含的事件名稱,與事件觸發的邏輯
public event ComputeSalaryCallback OnComputeSalaryDone;
在一個函數中,聲明事件觸發的邏輯,換句話說,當如下函數被調用的時候,觸發OnComputeSalaryDone事件:
public virtual double computeSalary( )
{ OnComputeSalary( mstrEmpID,mdblBaseSalary);
return mdblBaseSalary;
}
定義事件處理函數,以及將事件串連到事件處理函數,串連就像是 委託 到那個函數
public static void SalaryHander(string EmpID,double Salary)
{
Console.WeiteLine(”員工:員工代號={0},工資={1}”,EmpID,Salary);
}
OnComputeSalaryDone+=new ComputeSalaryCallback(SalaryHandler);
以上就完成了一個事件的整體,一旦調用computesalary()函數,就會觸發事件OnComputeSalaryDone,並引發事件處理函數。如果串連到多個事件處理函數,則會依次執行串連的時間處理函數。
另外可以把事件定義放到組件當中,然後在其他類裡聲明事件處理函數,進行處理。