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

  • 来源: 互联网 作者: rocket   2008-03-24/14:12
  • 以下是组件代码:
    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;
       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
    {
     /// <summary>
     /// WebForm1 的摘要说明。
     /// </summary>
     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)
      {
       // 在此处放置用户代码以初始化页面  
      }

      #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
     
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {   
       this.EventStudy1.ThreeEvent += new NSEventStudy.TwoEventHandle(this.EventStudy1_ThreeEvent);
       this.EventStudy1.TwoEvent += new NSEventStudy.TwoEventHandle(this.EventStudy1_TwoEvent);
       this.Button1.Click += new System.EventHandler(this.Button1_Click);
       this.Load += new System.EventHandler(this.Page_Load);

      }
      #endregion

      private void EventStudy1_TwoEvent(int flag)
      {
       this.Response.Write("<script>javascript:alert('TwoEvent事件触发')</script>");
      }

      private void EventStudy1_ThreeEvent(int flag)
      {
       this.Response.Write("<script>javascript:alert('ThreeEvent事件触发')</script>");
      }

      private void Button1_Click(object sender, System.EventArgs e)
      {
       this.EventStudy1.Execute(6);
       this.EventStudy1.InnerExecute(10);
      }
     }
    }


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多