방법: ASP.NET 웹 페이지에서 단일 이벤트 처리기에 여러 이벤트 연결

업데이트: 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 컨트롤에서 발생된 이벤트에 Button_Click 메서드를 바인딩하는 방법을 보여 줍니다.

    Sub Button_Click (ByVal sender as System.Object, _
        ByVal e as System.EventArgs) _
        Handles Button1.Click, Button2.Click, Button3.Click
    
    참고:

    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 웹 페이지에서 서버 이벤트 처리