2010-04-13 40 views
0

我很困惑,想確認下面的語句 -ASP.NET事件處理程序的基本問題

我們可以對同一個事件創建多個事件處理方法?

我認爲是的,因爲它是超載概念?對?

請糾正我的理解或建議。

謝謝。

回答

2

您可以根據需要訂閱具有儘可能多的事件處理程序的事件。例如,

Button.Click += OnClick; 
Button.Click += OnClick2;  
Button.Click += new EventHandler(OnClick3); // C# 1 syntax 

public void OnClick(object sender, EventArgs e) 
{ 
    // do something 
} 

public void OnClick2(object sender, EventArgs e) 
{ 
    // do something 2! 
} 

public void OnClick3(object sender, EventArgs e) 
{ 
    // do something 3! 
} 

這不是方法重載但使用.NET事件模型,所述Observer pattern的實現。請參閱MSDN article - Handling and Raising events瞭解更多詳情。

0

這不是重載。重載使用diff參數類型提供相同的方法名稱,並計數,因爲它有助於記憶函數名稱。 但訂閱一個事件不會超載,因爲你不能有diff參數類型,否則你的事件處理程序不會有資格註冊。並且這個註冊是使用像arraylist這樣的一些數據結構完成的(例如,保存註冊事件處理程序的列表)。

0

這就是事件的要點 - 一個對象發佈它可能引發特定類型事件的事實,並且訂閱者將自己鎖定到該事件。

當發佈者觸發事件時,將通知所有訂閱者並調用其指定的方法。

例如,在筆記本電腦上,Windows可能會發布電池低電量事件,哪些應用程序可以自己掛鉤以便他們調整性能以節約能源。