程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#事件的簡單認識1,

C#事件的簡單認識1,

編輯:C#入門知識

C#事件的簡單認識1,


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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved