當(dāng)前位置:
首頁(yè) >
不忘本~委托和事件(续)
發(fā)布時(shí)間:2025/6/15
45
豆豆
生活随笔
收集整理的這篇文章主要介紹了
不忘本~委托和事件(续)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
返回目錄 今天再說(shuō)說(shuō)委托在.net中的發(fā)展吧,從1.1,2.0到3.0是有不同的,主要表現(xiàn)在定義,調(diào)用上,而使用上還是一樣的. 在 1.0 的C# 版本中,聲明委托的唯一方法是使用命名方法。 C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表達(dá)式取代了匿名方法,作為編寫(xiě)內(nèi)聯(lián)代碼的首選方式。 不過(guò),本主題中有關(guān)匿名方法的信息同樣也適用于 Lambda 表達(dá)式。 有一種情況下,匿名方法提供了 Lambda 表達(dá)式中所沒(méi)有的功能。 您可使用匿名方法來(lái)忽略參數(shù)列表。 這意味著匿名方法可轉(zhuǎn)換為具有各種簽名的委托。 這對(duì)于 Lambda 表達(dá)式來(lái)說(shuō)是不可能的。 下面實(shí)例中,我叫一個(gè)按鈕button1分布使用了最原始的方法和匿名的方法來(lái)回調(diào)方法,看代碼: ??? 1 private void InitializeComponent()
2
3 {
4
5 this.button1 = new System.Windows.Forms.Button();
6
7 this.SuspendLayout();
8
9 //
10
11 // button1
12
13 //
14
15 this.button1.Location = new System.Drawing.Point(74, 40);
16
17 this.button1.Name = "testbtn1";
18
19 this.button1.Size = new System.Drawing.Size(75, 23);
20
21 this.button1.TabIndex = 0;
22
23 this.button1.Text = "點(diǎn)我";
24
25 this.button1.UseVisualStyleBackColor = true;
26
27 this.button1.Click += new System.EventHandler(this.button1_Click);
28
29
30
31 #region 為按鈕的單擊事件添加一個(gè)匿名的方法
32
33 this.button1.Click += delegate(System.Object o, System.EventArgs e)
34
35 {
36
37 System.Windows.Forms.MessageBox.Show("Click 1");
38
39 };
40
41 this.button1.Click += delegate(System.Object o, System.EventArgs e)
42
43 {
44
45 System.Windows.Forms.MessageBox.Show("Click 2");
46
47 };
48
49 #endregion
?
好了,對(duì)委托有了了解后,再來(lái)詳細(xì)的看看MSDN是如何定義事件的吧:
事件(C# 編程指南)
類(lèi)或?qū)ο?/strong>可以通過(guò)事件向其他類(lèi)或?qū)ο?/strong>通知發(fā)生的相關(guān)事情。 發(fā)送(或引發(fā))事件的類(lèi)稱(chēng)為“發(fā)行者”,接收(或處理)事件的類(lèi)稱(chēng)為“訂戶(hù)”。
在典型的 C# Windows 窗體或 Web 應(yīng)用程序中,可訂閱由控件(如按鈕和列表框)引發(fā)的事件。 可使用 Visual C# 集成開(kāi)發(fā)環(huán)境 (IDE) 來(lái)瀏覽控件發(fā)布的事件,選擇要處理的事件。 IDE 會(huì)自動(dòng)添加空事件處理程序方法和訂閱事件的代碼。
下圖是一個(gè)按鈕引發(fā)了一個(gè)事件:(訂閱事件代碼)
1 this.button1.Click += new System.EventHandler(this.button1_Click); 如果希望取消訂閱可以這樣寫(xiě): 1 this.button1.Click -= new System.EventHandler(this.button1_Click); 而VS同時(shí)幫助我們添加了一個(gè)空的處理事件的方法,如下: 1 private void button1_Click(object sender, EventArgs e) 2 3 { 4 5 }而這一切都是VS,IDE自動(dòng)為我們做好的,不用我們?nèi)ジ深A(yù).
返回目錄
轉(zhuǎn)載于:https://www.cnblogs.com/lori/archive/2011/06/09/2076425.html
總結(jié)
以上是生活随笔為你收集整理的不忘本~委托和事件(续)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网络操作系统与通常的操作系统的区别
- 下一篇: flex 3 使用手册