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