码迷,mamicode.com
首页 > Windows程序 > 详细

写一个事件(不仅仅是为控件添加事件)------------C#

时间:2015-08-29 18:41:36      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

最近看书上有关于事件的内容,之前在写winform时,事件都是直接用的,对内部的写法并不了解。

这里将自定义一个事件。

首先,写一个类。

 public  class NewMailEventArgs:EventArgs//这个类以后是事件的参数,用于传递事件的一些附加信息。但是必须继承EventArgs
    {
        private readonly string m_from, m_to, m_subject;

        public NewMailEventArgs(string from,string to,string subject) 
        {
            m_from = from;
            m_to = to;
            m_subject = subject;
        }

        public string From { get { return m_from; } }
        public string To { get { return m_to; } }
        public string Subject { get { return m_subject; } }

    }

再写一个类,类里面是有关事件的一些东西。

 public  class MailManager
    {
        public event EventHandler<NewMailEventArgs> NewMail;//定义一个事件,其实它是一个范型委托。这个委托需要两个参数。可以按F12跟到这个委托的定义

//定义一个事件的触发方法,这里为了类型安全,声明称protect protected virtual void OnNewMail(NewMailEventArgs e)//上面定义的那个类,在这里用来作为参数,传递信息 { //因为时间可能被很多地方调用,为了类型安全,这里不是直接操作NewMail事件 EventHandler<NewMailEventArgs> temp = Volatile.Read(ref NewMail); if (temp != null) temp(this,e); } //公开一个方法,用于把输入转化成一个期望的事件,触发事件OnNewMail public void SimulateNewMail(string from ,string to,string subject) { NewMailEventArgs e = new NewMailEventArgs(from ,to,subject); OnNewMail(e); } }

下面就是定义和触发事件了

 class Program
    {
        static void Main(string[] args)
        {
            MailManager mail = new MailManager();

            mail.NewMail += mail_NewMail;//创建事件

            mail.SimulateNewMail("hahah","hshshs","ksksksk");//触发这个事件

            mail.NewMail -= mail_NewMail;//销毁事件
        }

        static void mail_NewMail(object sender, NewMailEventArgs e)
        {
            Console.WriteLine("Faxing mail message:");
            Console.WriteLine("from={0},to={1},subject={2}", e.From, e.To, e.Subject);
            Console.ReadKey();
        }
    }

 

写一个事件(不仅仅是为控件添加事件)------------C#

标签:

原文地址:http://www.cnblogs.com/xiaoleye/p/4769498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!