C# 实现asp.net自定义事件学习

622 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情

前言:

今天这篇文章我们学习,在asp.net中使用自定义事件,我们知道自定义事件在asp.net中用到的机率确实很低,但低并不代表没有用到。尤其是在做自定义控件的时候,所有这个知识很值得我们去学习的,内容比较简单,希望大家勿喷,创作不易,大家顺便点点赞吧,你的点赞收藏关注,是我写文章的动力,栓Q啦。

6a04b428ly1fyot3kptr3g206o06o43f.gif

一、实例解析

c#自定义asp.net事件,一般是声明关于事件的委托,声明事件,编写引发事件的函数,事件处理这个几个步骤,对此我们需要具体分析一下: C#自定义事件的具体实现步骤如下:
声明一个delegate:  (用于事件的类型的定义)

public delegate void 事件名称EventHandler(object serder, EventArgs e);

事件名称用你的自己的来代替,随后的EventHandler是C#的建议命名规范,当然如果你不想遵守,可以使用任何字符甚至可以不要。如果你想自定义事件的参数EventArgs,你可以从这个类派生你自己的事件参数类,然后在delegate的声明中,用你的参数类替换EventArgs注:要全面了解自定义事件的原理,你需要学习有关delegate的知识。在你的类中声明一个事件,并且使用delegate作为事件的类型:

public event 事件名称EventHandler 事件名称;
在你的类中需要触发事件的方法中,添加事件触发代码:事件名称(this, new EventArgs()); 
或者:  
if(事件名称!=null)   
事件名称(this, new EventArgs());  //如果使用你自己的事件参数类,你可以用你的参数类事例替换new EventArgs(), 同时在你的参数类中保存你需要传递的数据。
C#自定义事件注册:
事件注册和普通的事件注册没有不同,也就是说如果一个外部的对象在你的事件被触发的时候需要作出响应,
那么你可以在外部了构造器中(或者适当的地方)对事件进行注册

带有事件的类实例.事件名称+= new 事件名称EventHandler( 事件处理方法名称); 编写事件处理方法:

public void 事件处理方法名称(object sender, EventArgs e){  
//添加你的代码  
} 

注:如果你在类中处理自己的触发事件,你可以选择C#自定义事件方式,也就是注册自己,也可以在触发事件代码中直接调用事件处理方法。

代码逻辑

namespace 自定义事件
{
    //自定义事件分为以下几步:
    class Program
    {
        static void Main(string[] args)
        {
            //第六步:主函数调用
            Dog dog = new Dog();
            Host host = new Host(dog);
            DateTime now = new DateTime(2013,8,31,22,39,50);
            DateTime nigth = new DateTime(2013,8,31,22,40,0);
            Console.WriteLine("~~~~~~~~~时间开始走啊走啊~~~~~~~~~");
            while(now <nigth){
                Console.WriteLine("当前时间:"+now);
                System.Threading.Thread.Sleep(1000);
                now = now.AddSeconds(1);
            }
            Console.WriteLine("~~~~~~~我是小偷,我来了~~~~~~~~~~~~");
            dog.OnAlarn();
        }
    }
    class Dog {
        //第一步:声明关于事件的委托
        public delegate void AlarnEven(object sender,EventArgs e);
        //第二步:声明事件
        public event AlarnEven Alarn;
        //第三步:编写引发事件的函数
        public void OnAlarn() {
            if(this.Alarn!=null){
                Console.WriteLine("n狗报警:有小偷进来了.汪汪汪~~~~~~~~~");
                this.Alarn(this,new EventArgs());
            }
        }
    }
    class Host { 
        //第四:编写事件的处理程序
        void HostAlarn(object sender, EventArgs e) 
        { Console.WriteLine("主人:抓住小偷啦..!"); }
        //第五步:注册事件的处理程序
        public Host(Dog dog) {
            dog.Alarn += new Dog.AlarnEven(HostAlarn);
        }
    }
}

四、总结

这篇文章比较简单,只是简单的学习一下,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!

12354689123110.gif