共用方式為


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 屬性。如果您這樣做,將會呼叫該方法兩次。

若要判斷哪一個控制項引發事件

  1. 在事件處理常式中宣告變數,變數的類型符合引發事件的控制項。

  2. 將事件處理常式的第一個引數指定給變數,將其轉型為適當的型別。

    在下列程式碼中中,示範了 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;
        }
    

請參閱

其他資源

ASP.NET Web 網頁中的伺服器事件處理