技术开发 频道

ASP.net组件编程中的两种事件编写方法

【IT168 技术文档】以下是组件代码:

using System; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; namespace NSEventStudy { public delegate void TwoEventHandle(int flag); public class EventStudy : System.Web.UI.WebControls.WebControl { ///////////////第一种定义事件的方法//////////////////// public event TwoEventHandle TwoEvent; public void Execute(int flag) { TwoEvent(flag); } ////////////////第二种定义事件的方法//////////////////// private static object _Process = new object(); public event TwoEventHandle ThreeEvent { add { Events.AddHandler(_Process,value); } remove { Events.RemoveHandler(_Process,value); } } public void InnerExecute(int flag) { TwoEventHandle handle = (TwoEventHandle)Events[_Process]; if(handle != null) { handle(flag); } else { this.RaiseBubbleEvent(this,null); } } protected override void Render(HtmlTextWriter writer) { base.Render (writer); writer.WriteLine("我爱你,中国"); } } } 测试程序: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace TestEvent { /// /// WebForm1 的摘要说明。 /// public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button1; protected NSEventStudy.EventStudy EventStudy1; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } Web 窗体设计器生成的代码 private void EventStudy1_TwoEvent(int flag) { this.Response.Write("javascript:alert('TwoEvent事件触发')"); } private void EventStudy1_ThreeEvent(int flag) { this.Response.Write("javascript:alert('ThreeEvent事件触发')"); } private void Button1_Click(object sender, System.EventArgs e) { this.EventStudy1.Execute(6); this.EventStudy1.InnerExecute(10); } } }
0
相关文章