如何:将多个事件连接到 ASP.NET 网页中的单个事件处理程序

更新:2007 年 11 月

如果已具有一个事件处理程序,可以将几个控件事件绑定到该事件处理程序。只要事件全部具有相同的方法签名,则这几个事件可以来自同一个控件,而一个事件也可以来自数个不同的控件。例如,您可能希望将 ASP.NET 页上几个 Button 服务器控件的 Click 事件绑定到单个事件处理程序。在调用处理程序后,您可以确定哪个控件引发了事件。

将多个事件连接到单个事件处理程序

  • 在页标记中,向每个控件添加相同的事件名称和方法名称,如下面的代码示例所示。

    <asp:Button ID="Button1" onclick="Button_Click" runat="server" 
      Text="Button1" /> 
    <br />
    <asp:Button ID="Button2" onclick="Button_Click" runat="server"
      Text="Button2" />
    
    ycbsc785.alert_note(zh-cn,VS.90).gif说明:

    必须确保方法具有它处理的事件的正确签名。

在 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
    
    ycbsc785.alert_note(zh-cn,VS.90).gif说明:

    如果使用 Handles 子句绑定事件和方法,则也不要在标记中包含事件属性。例如,不要在 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 网页中的服务器事件处理