방법: 코드를 사용하여 이벤트 처리기 추가

이 예제에서는 코드를 사용하여 요소에 이벤트 처리기를 추가하는 방법을 보여줍니다.

XAML 요소에 이벤트 처리기를 추가하려 하고, 요소가 포함된 표시 페이지가 이미 로드된 경우 코드를 사용하여 처리기를 추가해야 합니다. 또는 코드를 완전히 사용하고 XAML을 사용하여 요소를 선언하지 않으면서 애플리케이션에 대한 요소 트리를 빌드하는 경우 특정 메서드를 호출하여 생성된 요소 트리에 이벤트 처리기를 추가할 수 있습니다.

예제

다음 예제에서는 XAML에 처음 정의된 기존 페이지에 새 Button을 추가합니다. 코드 숨김 파일은 이벤트 처리기 메서드를 구현한 다음 해당 메서드를 Button의 새 이벤트 처리기로 추가합니다.

C# 예제에서는 += 연산자를 사용하여 이벤트에 처리기를 할당합니다. CLR(공용 언어 런타임) 이벤트 처리 모델에 있는 처리기를 할당하는 데 사용되는 것과 동일한 연산자입니다. Microsoft Visual Basic은 이벤트 처리기를 추가하는 수단으로 이 연산자를 지원하지 않습니다. 대신 다음 두 가지 기술 중 하나가 필요합니다.

  • AddHandler 메서드를 AddressOf 연산자와 함께 사용하여 이벤트 처리기 구현을 참조합니다.

  • Handles 키워드를 이벤트 처리기 정의의 일부로 사용합니다. 이 기술은 여기에 표시되지 않습니다. Visual Basic 및 WPF 이벤트 처리를 참조하세요.

<TextBlock Name="text1">Start by clicking the button below</TextBlock>
<Button Name="b1" Click="MakeButton">Make new button and add handler to it</Button>
public partial class RoutedEventAddRemoveHandler {
    void MakeButton(object sender, RoutedEventArgs e)
    {
        Button b2 = new Button();
        b2.Content = "New Button";
        // Associate event handler to the button. You can remove the event
        // handler using "-=" syntax rather than "+=".
        b2.Click  += new RoutedEventHandler(Onb2Click);
        root.Children.Insert(root.Children.Count, b2);
        DockPanel.SetDock(b2, Dock.Top);
        text1.Text = "Now click the second button...";
        b1.IsEnabled = false;
    }
    void Onb2Click(object sender, RoutedEventArgs e)
    {
        text1.Text = "New Button (b2) Was Clicked!!";
    }
Public Partial Class RoutedEventAddRemoveHandler
    Private Sub MakeButton(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Dim b2 As Button = New Button()
        b2.Content = "New Button"
        AddHandler b2.Click, AddressOf Onb2Click
        root.Children.Insert(root.Children.Count, b2)
        DockPanel.SetDock(b2, Dock.Top)
        text1.Text = "Now click the second button..."
        b1.IsEnabled = False
    End Sub
    Private Sub Onb2Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
        text1.Text = "New Button (b2) Was Clicked!!"
    End Sub

참고

처음에 구문 분석된 XAML 페이지에서 이벤트 처리기를 추가하는 것이 훨씬 간단합니다. 이벤트 처리기를 추가하려는 개체 요소 내에 처리하려는 이벤트의 이름과 일치하는 특성을 추가합니다. 그런 다음, 해당 특성의 값을 XAML 페이지의 코드 숨김 파일에서 정의한 이벤트 처리기 메서드의 이름으로 지정합니다. 자세한 내용은 WPF의 XAML 또는 라우트된 이벤트 개요를 참조하세요.

참고 항목