zoukankan      html  css  js  c++  java
  • ASP.net组件编程中的两种事件编写方法 (转)

    以下是组件代码:
    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
    {
     /// <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);
      }
     }
    }


    原文转:http://blog.csdn.net/lizanhong/archive/2004/10/16/138755.aspx
  • 相关阅读:
    4.net基础之委托事件
    2.net基础之反射
    绕过百度网盘速度限制直接下载百度网盘文件
    1.net基础之泛型
    网页图片按需加载
    小米官网图片轮播
    html+css3实现网页时钟
    接口自动化测试方案详解
    接口测试用例设计实践总结
    Mysql 高可用(MHA)-读写分离(Atlas)
  • 原文地址:https://www.cnblogs.com/dagon007/p/116228.html
Copyright © 2011-2022 走看看