生活随笔
收集整理的這篇文章主要介紹了
事件委托 EventHandler 。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
事件就是當對象或類狀態發生改變時,對象或類發出的信息或通知。發出信息的對象或類稱為"事件源",對事件進行處理的方法稱為"接收者",通常事件源在發出狀態改變信息時,它并不知道由哪個事件接收者來處理.這就需要一種管理機制來協調事件源和接收者,C++中通過函數指針來完成的.在C#中事件使用委托來為觸發時將調用的方法提供類型安全的封裝
事件的聲明
1.聲明一個委托
public delegate void EventHandler(object sender, System.EventArgs e);
2.聲明一個事件
public event EventHandler Changed;
3.引發一個事件
public OnChanged(EnventArgs e)
{
?if ( Changed != null)
?{
??Changed(this,e);
?}
}
4.定義事件處理程序
public MyText_OnChanged(Object sender,EventArgs e)
{
?...
}
5.訂閱事件(將事件處理程序添加到事件的調用列表中)
myText.Changed += EventHandler(MyText_OnChanged);
[csharp] view plaincopy print?
using?System;??using?System.Collections.Generic;??using?System.Linq;??using?System.Text;????namespace?事件的委托??{??????class?Program??????{??????????static?void?Main(string[]?args)??????????{??????????????MyClass?myClass?=?new?MyClass();??????????????????????????????myClass.Changed?+=?new?MyClass.ChangedEventHandler(myText_Changed);?????????????????????????????????????string?str?=?"";??????????????while?(str?!=?"quit")??????????????{??????????????????Console.WriteLine("please?enter?a?string:");??????????????????str?=?Console.ReadLine();??????????????????myClass.Text?=?str;??????????????}??????????}??????????????????????private?static?void?myText_Changed(object?sender,?EventArgs?e)??????????{??????????????Console.WriteLine("text?has?been?changed??:{0}\n",?((MyClass)sender).Text);??????????}??????????????????}??????public?class?MyClass???????{????????????????????private?string?myStr?=?"";????????????????????public?delegate?void?ChangedEventHandler(object?sender,?EventArgs?e);????????????????????public?event?ChangedEventHandler?Changed;????????????????????protected?virtual?void?OnChanged(EventArgs?e)??????????{??????????????if?(this.Changed?!=?null)??????????????????this.Changed(this,?e);??????????}????????????????????public?string?Text??????????{??????????????get?{?return?this.myStr;?}??????????????set??????????????{??????????????????this.myStr?=?value;????????????????????????????????????this.OnChanged(new?EventArgs());??????????????}??????????}??????}??}??
總結
以上是生活随笔為你收集整理的事件委托 EventHandler 。的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。