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