小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

c# 事件 EventHandler

 行走在理想邊緣 2019-03-21
 1     /// <summary>
 2     /// 事件:EventHanler
 3     /// 用戶在單擊win窗口中的如按鈕,復(fù)選框等,就會(huì)引發(fā)事件,我們要寫代碼去處理這些事件。實(shí)現(xiàn) 處理事件的 事件處理程序
 4     /// 在.Net里,有委托實(shí)現(xiàn)事件,具有事件的對(duì)象為:發(fā)布者。訂閱事件(處理事件)的為訂閱者。
 5     /// 當(dāng)對(duì)象提供事件時(shí),它會(huì)定義一個(gè)委托,則希望處理該事件的對(duì)象必須為這個(gè)委托提供函數(shù),該委托稱為事件,而處理該委托的函數(shù)稱為事件處理程序
 6     /// 如,當(dāng)你創(chuàng)建button并雙擊它時(shí),就會(huì)自動(dòng)添加一個(gè)事件處理程序。
 7     /// </summary>
 8     class Program
 9     {
10         /// <summary>
11         /// 下面是一個(gè)Timer類處理事件
12         /// </summary>
13         /// <param name="args"></param>
14         static void Main(string[] args)
15         {
16             Timer t=new Timer(1000);//對(duì)象t
17             t.Elapsed+=new ElapsedEventHandler(t_ela);//對(duì)象t的一個(gè)事件,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         /// 下面是一個(gè)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);//這個(gè)事件有些特別
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         /// 下面是一個(gè)自定義類處理事件
 3         /// 
 4         /// </summary>
 5         /// <param name="args"></param>
 6         private static void Main(string[] args)
 7         {
 8             AlarmClock c=new AlarmClock()                           //創(chuàng)建這個(gè)類的對(duì)象
 9             {
10                 AlarmTime = new DateTime(2013, 4, 22, 21, 04, 0, 0) //初使化它的時(shí)間
11             };
12             c.Start();                                              //開始里面的Timer
13             //調(diào)用里面的事件,這個(gè)事件是在時(shí)間到了的時(shí)候調(diào)用,而具體請(qǐng)看類
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)時(shí)間到了的時(shí)候,調(diào)用類的事件
43                 t.Stop();
44             }
45         }
46         //EventHandler是預(yù)定義的委托,該語句定義TimesUp為類的事件
47         public event EventHandler TimesUp;
48         protected virtual void onTimeUp(EventArgs e)//注意,上面那個(gè)和下面這個(gè)是一體的
49         {
50             if (TimesUp != null)                    //當(dāng)時(shí)間到了的事件,就會(huì)調(diào)用這個(gè)事件,而具體是怎么實(shí)現(xiàn)的,由這個(gè)類的對(duì)象決定。
51                 TimesUp(this, e);
52         }
 1         /// <summary>
 2         /// 事件與委托,這是一個(gè)非常重要的東西
 3         /// 學(xué)好了還要學(xué)會(huì)怎么用才對(duì)!
 4         /// </summary>
 5         /// <param name="args"></param>
 6         private static void Main(string[] args)
 7         {
 8             AlarmClock c=new AlarmClock()                           //創(chuàng)建這個(gè)類的對(duì)象
 9             {
10                 Message = "Meeting with customer",
11                 AlarmTime = new DateTime(2013, 4, 22, 22, 01, 0, 0) //初使化它的時(shí)間
12             };
13             c.Start();                                              //開始里面的Timer
14             //調(diào)用里面的事件,這個(gè)事件是在時(shí)間到了的時(shí)候調(diào)用,而具體請(qǐng)看類
15             //其中,TimesUp對(duì)應(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     //定義一個(gè)全新的事件類
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     //定義一個(gè)委托,其中包含有上面的事件類型作參數(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)時(shí)間到了的時(shí)候,調(diào)用類的事件
59                 t.Stop();
60             }
61         }
62         //AlarmClockEventHandler是預(yù)定義的委托,該語句定義TimesUp為類的事件
63         public event AlarmClockEventHandler TimesUp;
64         protected virtual void onTimeUp(AlarmClockEventArgs e)//注意,上面那個(gè)和下面這個(gè)是一體的
65         {
66             if (TimesUp != null)                    //當(dāng)時(shí)間到了的事件,就會(huì)調(diào)用這個(gè)事件,而具體是怎么實(shí)現(xiàn)的,由這個(gè)類的對(duì)象決定。
67                 TimesUp(this, e);
68         }
69     }    

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多