2009-08-23 29 views
1

在asp.net用戶控件中提升和事件的優點是什麼?舉辦活動的目的是什麼?

+4

如果silky的回答回答了您的問題,您應該將其標記爲已接受(表決下的複選標記) – 2009-08-23 22:49:15

回答

5

允許別人在你做某事時執行代碼,而不必輪詢你的狀態來知道你做了什麼。

+0

您能提供一個示例嗎? – Frank 2009-08-23 22:23:00

+0

一件事? 「OnLoad」是ASP.NET中的「頁面」事件。你在說什麼語言?你想要什麼樣的例子? – 2009-08-23 22:29:45

+0

所以這個頁面引發了一個OnLoad事件。這會是一個正確的詞組嗎? – Frank 2009-08-23 22:37:38

2

引發事件的目的通常是告知代碼中發生或即將發生的事情,以便讓程序的其他部分對此作出反應。通常,事件的設計方式使得引發事件的代碼以相同的方式工作,而不管是否附加任何偵聽器(事件處理程序)。

一個例子是按鈕的點擊事件。當用戶點擊按鈕時,該按鈕將引發一個單擊事件,這將允許任何附加的事件處理程序執行某些操作。但是,如果沒有附加事件處理程序,按鈕不會改變它的行爲(只是沒有發生任何事情)。

雖然大多數事件被觸發通知的東西已經發生,還有一些是爲了告知的東西即將發生提出了一些事件。有時這些事件使用具有讀/寫屬性的EventArgs類(與在EventArgs類中更常見的只讀屬性相反),它允許事件偵聽器將數據傳回給事件提升代碼。我不能從頭腦中想出任何良好的asp.net示例,但在winforms世界中,典型的例子是Form.Closing事件,其中事件處理程序可以設置e.Cancel = true以阻止表單關閉。

因此,在用戶控件中,只要外部代碼(通常是頁面)對控件中發生的某些事情感興趣時引發事件就會很有用。

0

要添加到這裏的其他答案,讓我用一個類比來解釋事件。

假設您想每天收到報紙。你可以給報社打電話,通知他們你希望收到他們可能印刷的新報紙 - 你「訂閱」報紙。報紙發送人維護訂閱者的列表 - 應該接收報紙的人。當報紙每天印刷時,如果您在訂閱者名單上,您將收到一份報紙。

現在,假設你有一個對象 - 一個按鈕,例如。假設你想知道該按鈕何時被按下。您「訂閱」事件 - 特別是「OnClick」或「OnPressed」或任何可能以您的使用語言命名的內容。只要用戶點擊按鈕,按鈕就會遍歷其訂閱者列表,並調用提供給每個訂閱者的功能。這些是'事件處理程序'。這些功能是用戶在事件發生時想要調用的功能。用英文,用戶可能會說:「當你按下時,調用MyOnClick()函數。」

事件在許多編程範例中用於處理複雜性 - 事件不需要知道事件處理程序的任何內容,反之亦然。這允許更鬆散的耦合,以及更多模塊化,可重用的代碼。

我建議你閱讀Observer Pattern,因爲這是事件和事件處理程序的基礎。