事件初步学习

假设有一个类(MailManager)它负责接收电子邮件,MailManager类公开一个NewMail事件,当接收到新的邮件时会触发NewMail事件,造成邮件分发给邮件处理对象(Fax类和Pager类的对象)。

第一步:定义类型来容纳邮件所有需要发送给邮件处理对象(Fax类和Pager类的对象)的信息;

class NewMailEventArgs:EventArgs//
    {
        private string from;//邮件发出人
        private string to;//邮件收取人
        private string subject;//邮件主题
        public NewMailEventArgs(string from,string to,string subject)
        {
            this.from = from;
            this.to = to;
            this.subject = subject;
        }
        public string From{get{return from;}}
        public string To{get{return to ;}}
        public string Subject{get{return subject;}}
    }

  

第二步:定义委托类型

 delegate void MyEventHandler(NewMailEventArgs e);//定义委托类型
 //CLR的事件模型是建立在委托的基础上的
 //通俗的讲这里定义的委托类型作用在于把事件成员和事件处理方法在在不同的类中绑定一起

  

第三步:MailManger类定义事件成员

class MailManger
    {
        public event MyEventHandler NewMail;//创建事件成员
        public void OnNewMail(NewMailEventArgs e)//触发事件的方法,收到新邮件
        {
            if (NewMail != null)
            {
                NewMail(e);
            }
        }
    }

  

第四步:Fax类和Pager类中定义事件处理方法

 class Fax
    {
        public void Mail(NewMailEventArgs e)
        {
            Console.WriteLine("邮件发送人:"+e.From+"  收件人"+e.To+"  邮件标题"+e.Subject);
            Console.WriteLine("Fax邮件正在处理中!!!!!!!");
        }
    }
    class Pager
    {
        public void Mail(NewMailEventArgs e)
        {
            Console.WriteLine("邮件发送人:" + e.From + "  收件人" + e.To + "  邮件标题" + e.Subject);
            Console.WriteLine("Pager邮件正在处理中!!!!!!!");
        }
    }

  

Fax类和Pager类接收的事件通知信息是一样的,但是它们的处理方法实现可以不同。

模拟收到邮件:

MailManger mail = new MailManger();
            NewMailEventArgs e = new NewMailEventArgs("me","你好","你好希望!!!");//邮件信息
            Fax fax = new Fax();
            Pager pager = new Pager();
            mail.NewMail += new MyEventHandler(pager.Mail);//绑定事件与事件处理方法
            mail.NewMail += new MyEventHandler(fax.Mail);
           mail.OnNewMail(e);//收到邮件   触发事件   调用事件处理方法

  

时间: 2024-08-04 20:41:25

事件初步学习的相关文章

Jquery Easy UI初步学习(二)datagrid的使用

第一篇学的是做一个管理的外框,接着就是数据datagrid绑定了,这里我用asp.net mvc3来做的,主要就是熟悉属性.方法. 打开easyui的demo 就可以看到如下一段代码: 和上篇一样class="easyui-datagrid", data-options="...",这是一样的,其他我在网上查了查,并做了整理 DataGrid 属性 参数名 类型 描述 默认值 title string Datagrid面板的标题 null iconCls strin

Jquery Easy UI初步学习(三)数据增删改

第二篇只是学了加载用datagrid加载数据,数据的增删改还没有做,今天主要是解决这个问题了. 在做增删改前需要弹出对应窗口,这就需要了解一下EasyUi的弹窗控件. 摘自:http://philoo.cnblogs.com/ 我的理解,就是panel有的属性Window.dialog都有,同时保留自己的扩展属性方法 , 所以主要展示pannel的属性. Pannel 属性 名称 类型 说明 默认值 title string 显示在Panel头部的标题文字. null iconCls strin

Jquery Easy UI初步学习(一)

Easy UI 1.3.2 以前听说Easy UI很不错,当了一个dome,闲着没事就看了一下,也整理一下为了自己更好的记忆,也希望对象我这样小菜有帮助吧 先从后台管理的主页面开始,如要要做主页需要了解以下几项 data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我们可以对easyui组件的实例化可以完全写入到html中,例如: <div class="easyui-dialog" style="width:400px;

第二十篇 jQuery 初步学习2

jQuery 初步学习2 前言: 老师这里啰嗦一下,因为考虑到一些同学,不太了解WEB前端这门语言.老师就简单的说一下,写前端,需要什么:一台笔记本.一个文本编辑器.就没啦!当然,写这门语言,我们要遵守它的规则,文本的后缀得是html,里面的编写格式当然也要遵守它的规则. 如果有同学没有好的编辑器,写代码很打脑壳,记不住单词等等,老师推荐一个编辑工具:WebStorm .老师用的就是这个来写的前端,版本用的是8.0.3,还是挺好用的. 上节课我们初步学习了jQuery,那么这节课,我们再深入了解

第十九篇 jQuery初步学习

jQuery 初步学习 jQuery可以理解为是一种脚本,需要到网上下载,它是一个文件,后缀当然是js的文件,它里面封装了很多函数方法,我们直接调用即可,就比方说,我们用JS,写一个显示与隐藏,通常是:div.style.display="none/block"这一类,即为显示或者隐藏,而jQuery,它里面做了处理,我们直接这样:$("div").hide() 隐藏,$("div").show() 显示,它在js里就处理了hide和show两个

DOM事件模型学习笔记

下面的内容属于阅读笔记,其中涉及大量内容来自于PPK的博客的内容,如果你要跟随我的脚步领略大家风采,那么就从Introduction to Events开始阅读吧. 现代的前端开发应该是会严格遵守 html 展示文档内容构成,css 渲染页面效果,javascript 提供交互 浏览器提供交互行为可以追溯到Netscape公司在其第二个版本中支持javascript语言,随后其与微软之间的浏览器大战,以及w3c标准制定的落后,导致至今一直被诟病的浏览器兼容问题,而这些不兼容中关于DOM事件模型的

舌尖上的安卓(android触控事件机制学习笔记录)

对于一个"我们从来不生产代码,我们只是大自然代码的搬运工"的码农来说.对android的触控机制一直是模棱两可的状态,特别是当要求一些自定义的控件和androide的自带控件(比如ViewPager,ListView,ScrollView)高度嵌套在一起使用时. 花了点时间梳理了下,做个笔记.对于一个触控的事件从用户输入到传递到Actigvity到最外层的Viewgroup在到子View,中间过程还可能穿插多个Viewgroup,android在ViewGroup提供了3个方法来控制流

LinQ的初步学习与总结

嘿嘿,说起来ORM和LinQ,就感觉离我好遥远的,在学校是没有学习的,所以总感觉学习了LinQ就是大神,现在嘛,终于也体会一点,感觉LinQ只是初步学习,没有太难,当然以后使用在项目中就没有这样的简单啦,下面就全面的总结一下LinQ的其中一部分,LinQ有三部分:LinQ TO Object:LinQ TO SQL ;LinQ TO XML.而在这里我先来总结一下LinQ TO Object的学习吧 一.初步认识LinQ to Object static void Main(string[] a

初步学习C++:C++的基本概念

开始学习C++,先从最基本的概念开始,让自己有一个系统的知识概念. 1.对象: 在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体.对象可以认为是:数据+操作(对象所能完成的操作表示它的动态行为,也成为方法). 2.类: 在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,类是对具有相同数据结构和相同操作的一类对象的描述. 3.消息: 在面向对象程序设计中,一个对象向另一个对象发出的请求被称为"消息".当对象接收到发向它的