asp.net中c#自定义事件的实现方法详解

 更新时间:2014年12月22日 10:18:15   投稿:shichen2014  
这篇文章主要介绍了asp.net中c#自定义事件的实现方法,较为详细的分析了自定义实现的各个步骤的具体实现思路与技巧,并给出了一个完整的实例总结,具有一定的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了asp.net中c#自定义事件的实现方法。分享给大家供大家参考。具体分析如下:

c#自定义事件分为六步,声明关于事件的委托,声明事件,编写引发事件的函数,事件处理,这里我们就来具体的介绍一下。

C#自定义事件的具体实现步骤如下:
1、声明一个delegate:
(用于事件的类型的定义)
如:

复制代码 代码如下:
public delegate void 事件名称EventHandler(object serder, EventArgs e);

事件名称用你的自己的来代替,随后的EventHandler是C#的建议命名规范,当然如果你不想遵守,可以使用任何字符甚至可以不要。

如果你想自定义事件的参数EventArgs,你可以从这个类派生你自己的事件参数类,然后在delegate的声明中,用你的参数类替换EventArgs

注:要全面了解自定义事件的原理,你需要学习有关delegate的知识。

2、在你的类中声明一个事件,并且使用步骤1的delegate作为事件的类型:
public event 事件名称EventHandler 事件名称;

3、在你的类中需要触发事件的方法中,添加事件触发代码

事件名称(this, new EventArgs()); 
或者:
if(事件名称!=null)   事件名称(this, new EventArgs());  //如果使用你自己的事件参数类,你可以用你的参数类事例替换new EventArgs(), 同时在你的参数类中保存你需要传递的数据。

4、C#自定义事件注册:

事件注册和普通的事件注册没有不同,也就是说如果一个外部的对象在你的事件被触发的时候需要作出响应,那么你可以在外部了构造器中(或者适当的地方)对事件进行注册

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

5、编写事件处理方法:

public void 事件处理方法名称(object sender, EventArgs e){
//添加你的代码
}
注:如果你在类中处理自己的触发事件,你可以选择C#自定义事件步骤4和5的方式,也就是注册自己,也可以在触发事件代码中直接调用事件处理方法。
说了一堆了,下面我们来看个实例

复制代码 代码如下:
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);
        }
    }
}

希望本文所述对大家的asp.net程序设计有所帮助。

相关文章

  • asp.net利用HttpModule实现防sql注入

    asp.net利用HttpModule实现防sql注入

    关于sql注入,已经被很多人讨论过了。这篇没有新意功能也不够通用,nnd,不想引起口水,就是觉得简单而且思路有参考性才贴出来。
    2009-12-12
  • Entity Framework使用配置伙伴创建数据库

    Entity Framework使用配置伙伴创建数据库

    这篇文章介绍了Entity Framework使用配置伙伴创建数据库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • ASP.NET Core中使用默认MVC路由的配置

    ASP.NET Core中使用默认MVC路由的配置

    这篇文章主要介绍了ASP.NET Core中使用默认MVC路由的配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • .Net反向代理组件Yarp用法详解

    .Net反向代理组件Yarp用法详解

    本文详细讲解了.Net反向代理组件Yarp的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Web.config(应用程序的配置信息)总结

    Web.config(应用程序的配置信息)总结

    Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中,接下来详细介绍一下配置情况,感兴趣的朋友可以了解下
    2013-01-01
  • ASP.NET State service状态服务的问题解决方法

    ASP.NET State service状态服务的问题解决方法

    每次重启机器以后,在.NET2005上跑Web程序老是遇到这样的问题
    2008-11-11
  • EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例

    EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例

    本篇文章主要是对EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • 使用 HttpReports 监控 .NET Core 应用程序的方法

    使用 HttpReports 监控 .NET Core 应用程序的方法

    这篇文章主要介绍了使用 HttpReports 监控 .NET Core 应用程序的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • .NET之后台用户权限管理实现

    .NET之后台用户权限管理实现

    在功能性比较强大的后台管理网站处于各种角度考虑多有应用权限管理功能。以公司内部管理系统为例,管理员根据不同员工所在不同部门赋予其不同权限,或者根据上下级隶属关系实现“金字塔”管理。本文内容有不尽不实之处恳请指正。
    2013-02-02
  • 关于c#连接ftp进行上传下载实现原理及代码

    关于c#连接ftp进行上传下载实现原理及代码

    ftp上传下载想必大家已经很熟悉了,关于c#连接ftp进行上传下载,一些新手朋友应该会很陌生吧,本文将带你解决困惑,感兴趣的朋友可以了解下哦,就当巩固知识了
    2013-01-01

最新评论