日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

c# 事件 EventHandler

 行走在理想邊緣 2019-03-21
 1     /// <summary>
 2     /// 事件:EventHanler
 3     /// 用戶在單擊win窗口中的如按鈕,復(fù)選框等,就會引發(fā)事件,我們要寫代碼去處理這些事件。實現(xiàn) 處理事件的 事件處理程序
 4     /// 在.Net里,有委托實現(xiàn)事件,具有事件的對象為:發(fā)布者。訂閱事件(處理事件)的為訂閱者。
 5     /// 當(dāng)對象提供事件時,它會定義一個委托,則希望處理該事件的對象必須為這個委托提供函數(shù),該委托稱為事件,而處理該委托的函數(shù)稱為事件處理程序
 6     /// 如,當(dāng)你創(chuàng)建button并雙擊它時,就會自動添加一個事件處理程序。
 7     /// </summary>
 8     class Program
 9     {
10         /// <summary>
11         /// 下面是一個Timer類處理事件
12         /// </summary>
13         /// <param name="args"></param>
14         static void Main(string[] args)
15         {
16             Timer t=new Timer(1000);//對象t
17             t.Elapsed+=new ElapsedEventHandler(t_ela);//對象t的一個事件,t_ela為事件t.Elapsed的處理程序
18             t.Start();
19             Console.ReadLine();
20         }
21         static void t_ela(object sender, ElapsedEventArgs e)//相關(guān)的簽名一定要一樣。
22         {
23             Console.SetCursorPosition(0,0);
24             Console.WriteLine(DateTime.Now);
25         }
26     }
 1         /// <summary>
 2         /// 下面是一個FileSystemWatcher類處理事件
 3         /// </summary>
 4         /// <param name="args"></param>
 5         static void Main(string[] args)
 6         {
 7             FileSystemWatcher fSysW=new FileSystemWatcher()
 8                 {
 9                     Path = @"c:\",
10                     Filter = "*.txt"
11                 }; 
12             //---wire up the event handlers----
13             fSysW.Deleted += new FileSystemEventHandler(fSysW_Deleted);
14             fSysW.Renamed += new RenamedEventHandler(fSysW_Renamed);//這個事件有些特別
15             fSysW.Changed += new FileSystemEventHandler(fSysW_Changed);
16             fSysW.Created += new FileSystemEventHandler(fSysW_Created);
17 
18             fSysW.EnableRaisingEvents = true;
19             Console.ReadLine();
20         }
21         static void fSysW_Deleted(object sender, FileSystemEventArgs e)
22         {
23             Console.WriteLine("fSysW_Deleted" + e.FullPath);
24         }
25         static void fSysW_Renamed(object sender, RenamedEventArgs e)
26         {
27             Console.WriteLine("fSysW_Renamed" + e.FullPath);
28         }
29         static void fSysW_Changed(object sender, FileSystemEventArgs e)
30         {
31             Console.WriteLine("fSysW_Changed" + e.FullPath);
32         }
33         static void fSysW_Created(object sender, FileSystemEventArgs e)
34         {
35             Console.WriteLine("fSysW_Created" + e.FullPath);
36         }
 1         /// <summary>
 2         /// 下面是一個自定義類處理事件
 3         /// 
 4         /// </summary>
 5         /// <param name="args"></param>
 6         private static void Main(string[] args)
 7         {
 8             AlarmClock c=new AlarmClock()                           //創(chuàng)建這個類的對象
 9             {
10                 AlarmTime = new DateTime(2013, 4, 22, 21, 04, 0, 0) //初使化它的時間
11             };
12             c.Start();                                              //開始里面的Timer
13             //調(diào)用里面的事件,這個事件是在時間到了的時候調(diào)用,而具體請看類
14             c.TimesUp+=new EventHandler(c_TimesUp);                 
15             Console.ReadLine();
16         }
17         static void c_TimesUp(object sender, EventArgs e)
18         {
19             Console.WriteLine("Times up!");
20         }
21 
22       
23     }
24 
25     class AlarmClock
26     {
27         private Timer t;
28         public DateTime AlarmTime { get; set; }
29         public void Start()
30         {
31             t.Start();
32         }
33         public AlarmClock()
34         {
35             t=new Timer(100);
36             t.Elapsed+=new ElapsedEventHandler(t_Elapsed);
37         }
38         void t_Elapsed(object sender, ElapsedEventArgs e)
39         {
40             if (DateTime.Now >= this.AlarmTime)
41             {
42                 onTimeUp(new EventArgs());          //當(dāng)時間到了的時候,調(diào)用類的事件
43                 t.Stop();
44             }
45         }
46         //EventHandler是預(yù)定義的委托,該語句定義TimesUp為類的事件
47         public event EventHandler TimesUp;
48         protected virtual void onTimeUp(EventArgs e)//注意,上面那個和下面這個是一體的
49         {
50             if (TimesUp != null)                    //當(dāng)時間到了的事件,就會調(diào)用這個事件,而具體是怎么實現(xiàn)的,由這個類的對象決定。
51                 TimesUp(this, e);
52         }
 1         /// <summary>
 2         /// 事件與委托,這是一個非常重要的東西
 3         /// 學(xué)好了還要學(xué)會怎么用才對!
 4         /// </summary>
 5         /// <param name="args"></param>
 6         private static void Main(string[] args)
 7         {
 8             AlarmClock c=new AlarmClock()                           //創(chuàng)建這個類的對象
 9             {
10                 Message = "Meeting with customer",
11                 AlarmTime = new DateTime(2013, 4, 22, 22, 01, 0, 0) //初使化它的時間
12             };
13             c.Start();                                              //開始里面的Timer
14             //調(diào)用里面的事件,這個事件是在時間到了的時候調(diào)用,而具體請看類
15             //其中,TimesUp對應(yīng)事件名稱:
16             c.TimesUp+=new AlarmClockEventHandler(c_TimesUp);                 
17             Console.ReadLine();
18         }
19         static void c_TimesUp(object sender, AlarmClockEventArgs e)
20         {
21             Console.WriteLine(DateTime.Now.ToShortTimeString()+" : "+e.Message);//可以包含參數(shù)了!
22         }
23     }
24 
25     //定義一個全新的事件類
26     public class AlarmClockEventArgs:EventArgs
27     {
28         public AlarmClockEventArgs(string Message)//構(gòu)造
29         {
30             this.Message = Message;
31         }
32         public string Message { get; set; }
33     }
34 
35     //定義一個委托,其中包含有上面的事件類型作參數(shù),難道事件的承載都是委托????!
36     public delegate void AlarmClockEventHandler(object sender, AlarmClockEventArgs e);
37 
38     class AlarmClock
39     {
40         private Timer t;
41         public DateTime AlarmTime { get; set; }
42         public string Message { get; set; }
43 
44         public AlarmClock()
45         {
46             t = new Timer(100);
47             t.Elapsed += new ElapsedEventHandler(t_Elapsed);
48         }
49         public void Start()
50         {
51             t.Start();
52         }
53       
54         void t_Elapsed(object sender, ElapsedEventArgs e)
55         {
56             if (DateTime.Now >= this.AlarmTime)
57             {
58                 onTimeUp(new AlarmClockEventArgs(this.Message));          //當(dāng)時間到了的時候,調(diào)用類的事件
59                 t.Stop();
60             }
61         }
62         //AlarmClockEventHandler是預(yù)定義的委托,該語句定義TimesUp為類的事件
63         public event AlarmClockEventHandler TimesUp;
64         protected virtual void onTimeUp(AlarmClockEventArgs e)//注意,上面那個和下面這個是一體的
65         {
66             if (TimesUp != null)                    //當(dāng)時間到了的事件,就會調(diào)用這個事件,而具體是怎么實現(xiàn)的,由這個類的對象決定。
67                 TimesUp(this, e);
68         }
69     }    

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多