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程序设计有所帮助。

相关文章

  • .NET Core中获取各种路径的的方法总结

    .NET Core中获取各种路径的的方法总结

    在 .NET Core 开发过程中,正确处理文件路径是每个开发者都会遇到的常见需求,无论是读取配置文件、写入日志,还是管理上传的文件,都需要准确地获取各种路径信息,本文将全面介绍 .NET Core 中获取各种路径的方法,帮助开发者避免常见的"坑",需要的朋友可以参考下
    2025-04-04
  • GridView使用学习总结

    GridView使用学习总结

    这篇文章主要是关于GridView使用的学习总结,需要的朋友可以参考下
    2015-09-09
  • asp.net 开发的一些常用技巧

    asp.net 开发的一些常用技巧

    asp.net开发过程中,发现的一些不错技巧,能用的到的朋友有福了。
    2009-07-07
  • 详解IdentityServer4介绍和使用

    详解IdentityServer4介绍和使用

    在.NETCORE中更倾向于使用Identityserver4组件来构建认证授权服务,原因是IdentityServer4 是为ASP.NET Core系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证框架,本文重点介绍IDS4实际使用过程中涉及到的技术点,感兴趣的朋友一起看看吧
    2022-07-07
  • 微信小程序基于腾讯云对象存储的图片上传功能

    微信小程序基于腾讯云对象存储的图片上传功能

    这篇文章主要介绍了微信小程序基于腾讯云对象存储的图片上传功能,需要的朋友可以参考下
    2018-03-03
  • MVC4制作网站教程第三章 浏览用户组操作3.1

    MVC4制作网站教程第三章 浏览用户组操作3.1

    这篇文章主要为大家详细介绍了MVC4制作网站教程,浏览用户组功能的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • asp.net多文件上传实例讲解

    asp.net多文件上传实例讲解

    这篇文章主要为大家详细介绍了asp.net多文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • asp.net利用存储过程实现模糊查询示例分享

    asp.net利用存储过程实现模糊查询示例分享

    这篇文章主要介绍了asp.net利用存储过程实现模糊查询的示例,大家参考使用吧
    2014-01-01
  • gojs一些实用的高级用法

    gojs一些实用的高级用法

    gojs是一个非常强大的可视化关系的js库。本文介绍的是在使用gojs制作图的过程中,你可能会碰到的问题的一些解决方案。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • 用ASP.NET做的个性化的邮件发送系统

    用ASP.NET做的个性化的邮件发送系统

    如果要你用ASP来做一个邮件发送系统,你一定认为这是一个比较复杂的工作。其实也的确是这样。但当他的后继产品ASP.NET被推出以后,他的强大功能就使的这一切就变的相对简单了。真的这样神奇么?我们就通过ASP.NET做一个邮件发送系统,看看到底有什么奥秘,是不是真的简单。
    2008-02-02

最新评论