在C#.NET的開發中,事件是經常接觸到的概念,比如為按鈕添加點擊事件,並寫入點擊按鈕觸發事件要運行的代碼。不管是ASP.NET還是WinForm等各種形式的應用程序,最經常是為系統生成的事件寫具體代碼。如果要自定義事件呢?有的朋友對於自定義事件感覺比較難理解。最近在開發HoverTreeTop項目時,有一個自定義事件的實例,分享一下。HoverTreeTop是一個ASP.NET項目,有一個產品展示的功能,那麼就需為產品添加圖片展示(http://hovertree.com/top/htpro/5dbcb599663b3397.htm),如果是經常網購的朋友就很清楚的。HoverTreeTop項目中添加圖片是作為一個獨立的用戶控件(UCPictureAdd.ascx)實現的,這樣可提高代碼復用性。產品和圖片分別有各自的數據表(分別為HoverTreeTop_product和HoverTreeTop_picture),它們之間的關系也有一個表(HoverTreeTop_ProductPic)。
操作的流程為:先添加產品信息,再進入產品修改頁(ProductAlter.aspx),在修改頁中放置圖片添加用戶控件,使用用戶控件成功添加圖片後,再添加產品和圖片關系。
那麼在後台成功添加圖片後,就需要為圖片和產品指定關系。這裡就用到了C#的自定事件。在添加上傳圖片的用戶控件中,自定義委托和自定義事件,當成功添加圖片後,就觸發事件。而在引用用戶控件的產品修改頁中,則監聽事件,指定事件觸發所執行的方法。
請看UCPictureAdd.ascx.cs代碼:
public delegate void OperateSuccessHanlder(string fileName); //創建委托 public event OperateSuccessHanlder OperateSuccess; void OnOperateSuccess(string fileName) { OperateSuccess?.Invoke(fileName); } protected void button_hewenqi_Click(object sender, EventArgs e) { OnOperateSuccess("hovertree");//這裡傳入值需換為實際值 }
ProductAlter.aspx.cs的代碼:
protected void Page_Load(object sender, EventArgs e) { //為控件的事件添加監聽方法 picAdd1.OperateSuccess += PicAdd1_OperateSuccess; } private void PicAdd1_OperateSuccess(string fileName) { //添加產品和圖片關系 }
所以自定義事件的步驟簡單來說就是,定義委托,定義事件,觸發事件,監聽事件。
涉及到的源碼:
http://hovertree.com/top/code/hovertreepanel/htpanel/hcontrol/ucpictureadd.ascx.htm
http://hovertree.com/top/code/hovertreepanel/htpanel/hcontrol/ucpictureadd.ascx.cs.htm
http://hovertree.com/top/code/hovertreepanel/htpanel/hproduct/productalter.aspx.htm
http://hovertree.com/top/code/hovertreepanel/htpanel/hproduct/productalter.aspx.cs.htm
更詳細代碼可以下載項目源碼:
http://hovertree.com/h/bjaf/hv6cqe5n.htm
轉自:http://hovertree.com/h/bjag/cm8k4ja1.htm
推薦:
http://www.cnblogs.com/sosoft/p/kaifajishu.html