다음을 통해 공유


자세히 보기: 이벤트 처리기 공유

업데이트: 2007년 11월

이 단원에서는 둘 이상의 컨트롤에 대한 이벤트를 처리하는 공유 이벤트 처리기를 만드는 방법을 살펴봅니다.

이전 단원 프로그램에서 사용자 동작에 응답: 이벤트 처리기 만들기에서는 Button 컨트롤에 대한 MouseEnterMouseLeave 이벤트에 응답하는 코드 작성 방법을 배웠습니다. 그렇다면 둘 이상의 Button 컨트롤이 있고 이러한 모든 컨트롤에 대해 동일한 메시지를 표시하려는 경우에는 어떠한 결과가 발생할까요? 각 컨트롤에 대한 이벤트 처리기에 코드를 쓸 수도 있지만, 더 쉬운 방법이 있습니다.

MouseEnter 이벤트에 대한 이벤트 처리기 메서드를 잘 살펴보면 Method 선언(Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter)에 Handles 절(Handles Button1.MouseEnter)이 들어 있음을 알 수 있습니다. 또한 Handles 키워드에는 이벤트 처리기가 처리해야 할 이벤트가 나타나 있습니다.

여러 컨트롤 간에 이벤트 처리기를 공유하려는 경우 다른 컨트롤 이름과 처리할 이벤트 이름을 추가하면 됩니다. 그러면 해당 컨트롤 중 하나에 대해 이벤트가 발생할 경우 이벤트 처리기에 알립니다. 예를 들어 두 개의 Button 컨트롤이 있으며 이 두 컨트롤에 대해 동일한 이벤트 처리기를 사용하려는 경우 다음과 같이 Handles 절을 지정하면 됩니다.

Handles Button1.MouseEnter, Button2.MouseEnter.

이제 두 컨트롤에 대한 MouseEnter 이벤트를 처리하는 단일 메서드가 갖춰졌습니다. 그런데, 이벤트 처리기에서는 이벤트를 발생시킨 컨트롤을 어떻게 확인할 수 있을까요? Method 선언에서 ByVal sender As Object 절의 Sender 키워드는 이벤트를 발생시킨 개체(이 경우에는 컨트롤)를 이벤트 처리기에 알려 줍니다.

실습

이벤트 처리기를 공유하려면

  1. 이전 단원에서 만든 EventHandler 프로젝트를 엽니다. 프로젝트를 저장하지 않았으면 이전 단원 프로그램에서 사용자 동작에 응답: 이벤트 처리기 만들기로 다시 돌아가서 저장 절차를 완료합니다.

  2. 솔루션 탐색기에서 Form1.vb를 선택한 다음 보기 메뉴에서 디자이너를 선택합니다.

  3. 도구 상자에서 다른 Button 컨트롤을 폼으로 끌어 옵니다.

  4. 속성 창에서 AutoSize 속성을 True로 설정합니다.

  5. 보기 메뉴에서 코드를 선택하여 코드 편집기를 엽니다.

  6. Button1_MouseEnter 메서드 선언(Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter)에서 Handles 절을 Handles Button1.MouseEnter, Button2.MouseEnter로 변경합니다.

  7. 이벤트 선언 본문에서 해당 코드를 다음으로 바꿉니다.

    If sender.Equals(Button1) Then
      Button1.Text = "The mouse has entered Button1"
    Else
      Button2.Text = "The mouse has entered Button2"
    End If
    

    이 코드는 송신자가 Button1인지 확인합니다. 송신자가 Button1이면 Button1의 Text 속성이 업데이트되고, 그렇지 않으면 Button2의 Text 속성이 업데이트됩니다.

  8. Button1_MouseLeave 메서드 선언에서 Handles 절을 다음과 같이 변경합니다.

    Handles Button1.MouseLeave, Button2.MouseLeave.

  9. 이벤트 선언 본문에서 해당 코드를 다음으로 바꿉니다.

    sender.Text = "The mouse has left"
    

    이 경우 코드는 송신자(Button1 또는 Button2)의 Text 속성을 동일한 문자열로 설정합니다.

  10. F5 키를 눌러 응용 프로그램을 실행합니다.

    이제 마우스 포인터를 단추 위로 이동하면 단추 이름과 함께 텍스트가 The mouse has entered로 변경되며 마우스를 단추 밖의 다른 곳으로 이동하면 텍스트가 The mouse has left로 다시 변경됩니다.

    폼에 다른 컨트롤을 추가한 후 해당 컨트롤을 포함하도록 Handles 절을 수정해 보십시오. 서로 다른 종류의 컨트롤도 추가할 수 있습니다.

다음 단계

이 단원에서는 여러 컨트롤 간에 단일 이벤트 처리기를 공유하는 방법을 배웠습니다. 다음 단원에서는 CheckBoxRadioButton의 새로운 두 가지 종류의 컨트롤을 사용하여 사용자에게 선택 옵션을 제공하는 방법을 살펴봅니다.

다음 단원: 사용자 선택 항목 가져오기: 확인란 및 라디오 단추 사용

참고 항목

작업

프로그램에서 사용자 동작에 응답: 이벤트 처리기 만들기