博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
事件初步学习
阅读量:4952 次
发布时间:2019-06-12

本文共 1971 字,大约阅读时间需要 6 分钟。

 

        假设有一个类(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);//收到邮件   触发事件   调用事件处理方法

  

转载于:https://www.cnblogs.com/Chh884/p/3957252.html

你可能感兴趣的文章
express: command not found.
查看>>
TinyXml高速入门(一)
查看>>
点击表格的单元格时实现变颜色,通过for循环为每个单元格添加一个onclick事件...
查看>>
webform Response的一些成员
查看>>
Countries in War(强连通分量及其缩点)
查看>>
Eclipse中用Link方式安装Maven插件(转载)
查看>>
Android菜鸟的成长笔记(11)——Android中的事件处理
查看>>
JStrom的zk数据
查看>>
使用“dotconnect for oracle”绕过oracle客户端连接Oracle数据库
查看>>
CentOS/RHEL Linux安装EPEL第三方软件源
查看>>
redisson
查看>>
Weblogic集群
查看>>
HDU 5351 MZL's Border (多校联合第5场1009)
查看>>
js三种定义类的方法
查看>>
离线批量数据通道Tunnel的最佳实践及常见问题
查看>>
Struts2学习第2天--Struts2的Servlet的API的访问 Struts2的结果页面的配置 Struts2的数据的封装(包括复杂类型)...
查看>>
python3练习100题——044
查看>>
ORACLE1.5(上班前必须掌握-开项目的准备)
查看>>
正则表达式学习笔记(2)元字符和修饰符
查看>>
基础算法(四)——深度优先搜索
查看>>