C#事件的简单认识1_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C#事件的简单认识1

C#事件的简单认识1

 2015/3/22 22:58:39  yiqiok  程序员俱乐部  我要评论(0)
  • 摘要:EventArgs类,表示包含事件数据的类的基类,并提供要用于不包含事件数据的事件的值。当需要定义的事件中包含事件数据时,可以从EventArgs选件类派生自定义事件数据类;代码及结果如下:publicclassInviteEventArgs:EventArgs//自定义事件类{publicstringMessage;publicInviteEventArgs(stringmsg)//构造函数,传入参数{Message=msg;}}publicclassYiqiok//事件发布者
  • 标签:事件 C# 认识

class="title">EventArgs 类,表示包含事件数据的类的基类,并提供要用于不包含事件数据的事件的值。

 当需要定义的事件中包含事件数据时,可以从EventArgs 选件类派生自定义事件数据类;代码及结果如下:

 public class InviteEventArgs:EventArgs  //自定义事件类
    {
        public string Message;
        public InviteEventArgs(string msg)  //构造函数,传入参数
        {
            Message = msg;
        }
    }

    public class Yiqiok            //事件发布者
    {
        public delegate void InviteHandler(object sender, InviteEventArgs e); // 自定义委托类型
        public event InviteHandler LolInvite;  //使用自定义的委托类型定义事件
        public void InviteComing(string msg)  //发出事件
        {
            if(LolInvite!=null)   //检查是否添加了事件处理方法
            {
             //   Console.WriteLine(msg);
                LolInvite(this, new InviteEventArgs(msg));  //触发事件

            }
        }
        
    }
    public class Classmate  //事件订阅者
    {
        private string name;
        public Classmate (string Name)
        {
            name = Name;
        }
        public void SendResponse(object s,InviteEventArgs e)  //事件处理函数,要与自定义委托类型匹配
        {
            Console.WriteLine(e.Message);
            Console.WriteLine("来自:" + this.name + "的回复: 已经收到邀请,随时可以开始!");
        }
    }
    public class Start
    {
        static void Main()
        {
            Yiqiok yiqiok = new Yiqiok();//初始化
            Classmate classmate1 = new Classmate("Lna");
            Classmate classmate2 = new Classmate("Jim");
            Classmate classmate3 = new Classmate("Cry");
            Classmate classmate4 = new Classmate("Tom");

            yiqiok.LolInvite += new Yiqiok.InviteHandler(classmate1.SendResponse);//订阅事件
            yiqiok.LolInvite += new Yiqiok.InviteHandler(classmate2.SendResponse);
            yiqiok.LolInvite += new Yiqiok.InviteHandler(classmate3.SendResponse);
            yiqiok.LolInvite += new Yiqiok.InviteHandler(classmate4.SendResponse);

            yiqiok.InviteComing("yiqiok:五人开黑来不来???");  //发出通知

        }
    }

结果:

     

更多细节参考MSDN

发表评论
用户名: 匿名