asp.net 类自定义事件

首选在类中做如下操作:

    public class CBook
    {
        private string m_title;

  //1,创建委托
        public delegate void TitleChangeHandle();

  //2 创建事件
        public event TitleChangeHandle TitleChange;
        public string Title
        {
            set
            {
                this.m_title = value;

    //3测试,当属性值改变时来触发事件
                TitleChange();
            }
        }

    }

在调用页面:

首先编写事件处理函数:

    void BookChange()
    {
        Response.Write("事件执行了");
    }

最后用下面一个小例子测试一下:

        CBook book = new CBook();

       //添加事件
        book.TitleChange+=new CBook.TitleChangeHandle(BookChange);
        book.Title = "test";

==============================================

EventHandler以及其它自定义的事件委托都是一类特殊的委托,他们有相同的形式:

delegate void 事件委托名(object sender,EventArgs e);

object用来传递事件的发生者,比如二中的Button控件就是一个事件发生者;EventArgs用来传递事件的细节。

例程二:

程序代码

using System;

namespace 最简单的自定义事件
{
     /// <summary>
     /// 事件发送类
     /// </summary>
     class Class1
     {
         public delegate void UserRequest(object sender,EventArgs e);  //定义委托
         public event UserRequest OnUserRequest;  //定义一个委托类型的事件

         public void run()
         {
             while(true)
             {
                 if(Console.ReadLine()=="a")
                 {//事件监听
                     OnUserRequest(this,new EventArgs()); //产生事件
                 }
             }
         }
     }

     /// <summary>
     /// 事件接收类
     /// </summary>
     class Class2
     {
         static void Main(string[] args)
         {
             Class1 c1 = new Class1();
             c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest);  //委托实例化后绑定到事件
             c1.run();
         }

         private static void c1_OnUserRequest(object sender, EventArgs e)
         {//事件处理方法
             Console.WriteLine("/t你触发了事件!");
         }
     }
}

例程三:
程序代码

using System;

namespace 带事件数据的事件
{
     /// <summary>
     /// 带事件数据的事件类,从EventArgs继承
     /// </summary>
     class OnUserRequestEventArgs:EventArgs
     {
         private string inputText;
         public string InputText
         {
             get
             {
                 return inputText;
             }
             set
             {
                 inputText = value;
             }
         }
     }

     /// <summary>
     /// 事件发送类
     /// </summary>
     class Class1
     {
         public delegate void UserRequest(object sender,OnUserRequestEventArgs e); ------------->声明委托
         public event UserRequest OnUserRequest; ------->定义一个委托类型的事件

         public void run()
         {
             while(true)
             {
                 Console.WriteLine("请输入内容:");
                 string a=Console.ReadLine();
                 //if(a=="a")
                 //{
                 OnUserRequestEventArgs e1 = new OnUserRequestEventArgs();
                 e1.InputText = a;
                 OnUserRequest(this,e1);
                 //}
             }
         }
     }

     /// <summary>
     /// 事件接收类
     /// </summary>
     class Class2
     {
         [STAThread]
         static void Main(string[] args)
         {
             Class1 c1 = new Class1();
             c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest);
             c1.run();
         }

         private static void c1_OnUserRequest(object sender, OnUserRequestEventArgs e)
         {
             Console.WriteLine("/t你输入的是:"+e.InputText);
         }
     }
}

例程三跟例程二唯一的差别在于自定义了一个类OnUserRequestEventArgs,从EventArgs继承
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值