HOW TO:在 ASP.NET Web 網頁中將多個事件連接至單一事件處理常式
更新:2007 年 11 月
如果您已經擁有一個事件處理常式,您可以將幾個控制項事件繫結到它。上述多個事件可能來自同一個控制項,或者一個事件來自好幾個不同的控制項 (只要這些事件都具有相同的方法簽章)。例如,您可能要將 ASP.NET 網頁上數個 Button 伺服器控制項的 Click 事件繫結至單一事件處理常式。在呼叫了處理常式時,您可判斷哪一個控制項造成事件。
若要將多個事件連接至單一事件處理常式
在網頁標記中,將相同的事件名稱和方法名稱加入每個控制項,如下列程式碼範例所示。
<asp:Button ID="Button1" onclick="Button_Click" Text="Button1" /> <br /> <asp:Button ID="Button2" onclick="Button_Click" Text="Button2" />
注意事項: 您必須確定方法具有其正在處理之事件的正確簽章。
若要在 Visual Basic 中將多個事件連接至同一個事件處理常式
藉由加入方法應該處理的事件名稱,修改方法的 Handles 子句。用逗號分隔事件名稱。
在下列程式碼中,示範了如何將 Button_Click 方法繫結至由三個 Button 控制項引發的事件。
Sub Button_Click (ByVal sender as System.Object, _ ByVal e as System.EventArgs) _ Handles Button1.Click, Button2.Click, Button3.Click
注意事項: 如果使用 Handles 子句繫結事件和方法,請勿在標記中另外包含事件屬性 (Attribute)。例如,請勿在標記中包含 Button 控制項的 onClick 屬性。如果您這樣做,將會呼叫該方法兩次。
若要判斷哪一個控制項引發事件
在事件處理常式中宣告變數,變數的類型符合引發事件的控制項。
將事件處理常式的第一個引數指定給變數,將其轉型為適當的型別。
在下列程式碼中中,示範了 Button 控制項之由數個不同按鈕所呼叫的 Click 事件處理常式。處理常式會顯示造成事件之按鈕的 ID 屬性。
Private Sub Button_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click, Button2.Click, Button3.Click Dim b As Button = CType(sender, Button) Label1.Text = b.ID End Sub
private void Button_Click(object sender, System.EventArgs e) { Button b = (Button) sender; Label1.Text = b.ID; }