轉自:http://www.cnblogs.com/wudiwushen/archive/2010/04/20/1703763.htmlhtml
什麼是事件?EVENT?點擊事件?加載事件?一連串的模糊的概念衝擊着咱們弱小的腦殼spa
那咱們首先來看一下比較正統的感念吧:code
事件是類在發生其關注的事情時用來提供通知的一種方式。htm
事件的發生通常都牽扯2個角色對象
事件發行者(Publisher):一個事件的發行者,也稱做是發送者(sender),其實就是個對象,這個對象會自行維護自己的狀態信息,當自己狀態信息變更時,便觸發一個事件,並通知說有的事件訂閱者。blog
事件訂閱者(Subscriber):對事件感興趣的對象,也稱爲Receiver,能夠註冊感興趣的事件,在事件發行者觸發一個事件後,會自動執行這段代碼。事件
爲了更好的讓你們理解上面的概念,我先什麼都不講,咱們先來看一段簡單的代碼:string
編譯結果以下it
若是童靴們,從上到下仔細看一邊的話,我想應該知道什麼是發佈者,什麼是訂閱者了吧,那至於事件呢編譯
咱們先看這句
publisher.OnPublish += new Publisher.PublishEventHander(MrMing.Receive);
這就是小明向出版社訂閱他喜歡看的火影忍者,小張沒有訂閱因此小張沒有收到書,
咱們再仔細看看這個賦值語句,是否是似曾相識過呢?是的就是咱們在上一講,在講委託聲明的時候,簡直就是一個眸子裏刻出來的嘛
委託賦值:
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
因此,你們不要對事件有什麼好怕的,其實事件的本質就是一個委託鏈,
咱們看一下事件的聲明:
//聲明一個出版的委託
public delegate void PublishEventHander();
//在委託的機制下咱們創建以個出版事件
public event PublishEventHander OnPublish;
在咱們使用事件的時候,必需要聲明對應的委託,而觸發事件,其實就是在使用委託鏈。
好了你們先消化消化這講的內容,咱們在下一講裏,咱們會講到咱們期盼已久的Sender,e兩個神祕的參數了