ASP.net組件編程中的兩種事件編寫方法
以下是組件代碼:
usingSystem; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; usingSystem.ComponentModel; namespaceNSEventStudy { publicdelegatevoidTwoEventHandle(intflag); publicclassEventStudy:System.Web.UI.WebControls.WebControl { ///////////////第一種定義事件的方法//////////////////// publiceventTwoEventHandleTwoEvent; publicvoidExecute(intflag) { TwoEvent(flag); } ////////////////第二種定義事件的方法//////////////////// privatestaticobject_Process=newobject(); publiceventTwoEventHandleThreeEvent { add { Events.AddHandler(_Process,value); } remove { Events.RemoveHandler(_Process,value); } } publicvoidInnerExecute(intflag) { TwoEventHandlehandle=(TwoEventHandle)Events[_Process]; if(handle!=null) { handle(flag); } else { this.RaiseBubbleEvent(this,null); } } protectedoverridevoidRender(HtmlTextWriterwriter) { base.Render(writer); writer.WriteLine("我愛你,中國"); } } } |
測試程序:
usingSystem; usingSystem.Collections; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Web; usingSystem.Web.SessionState; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; usingSystem.Web.UI.HtmlControls; namespaceTestEvent { ///<summary> ///WebForm1的摘要說明。 ///</summary> publicclassWebForm1:System.Web.UI.Page { protectedSystem.Web.UI.WebControls.ButtonButton1; protectedNSEventStudy.EventStudyEventStudy1; privatevoidPage_Load(objectsender,System.EventArgse) { //在此處放置用戶代碼以初始化頁麵 } #regionWeb窗體設計器生成的代碼 overrideprotectedvoidOnInit(EventArgse) { // //CODEGEN:該調用是ASP.NETWeb窗體設計器所必需的。 // InitializeComponent(); base.OnInit(e); } ///<summary> ///設計器支持所需的方法-不要使用代碼編輯器修改 ///此方法的內容。 ///</summary> privatevoidInitializeComponent() { this.EventStudy1.ThreeEvent+=newNSEventStudy.TwoEventHandle(this.EventStudy1_ThreeEvent); this.EventStudy1.TwoEvent+=newNSEventStudy.TwoEventHandle(this.EventStudy1_TwoEvent); this.Button1.Click+=newSystem.EventHandler(this.Button1_Click); this.Load+=newSystem.EventHandler(this.Page_Load); } #endregion privatevoidEventStudy1_TwoEvent(intflag) { this.Response.Write("<script>javascript:alert('TwoEvent事件觸發')</script>"); } privatevoidEventStudy1_ThreeEvent(intflag) { this.Response.Write("<script>javascript:alert('ThreeEvent事件觸發')</script>"); } privatevoidButton1_Click(objectsender,System.EventArgse) { this.EventStudy1.Execute(6); this.EventStudy1.InnerExecute(10); } } } |
最後更新:2017-04-02 00:06:32