UIElement.AddHandler 메서드

정의

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다.

오버로드

AddHandler(RoutedEvent, Delegate)

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다.

AddHandler(RoutedEvent, Delegate, Boolean)

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다. 이벤트 경로를 따라 다른 요소에서 처리된 것으로 이미 표시된 라우트된 이벤트에 대해 제공된 처리기를 호출하기 위해 handledEventsTootrue로 지정합니다.

AddHandler(RoutedEvent, Delegate)

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다.

public:
 virtual void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler);
abstract member AddHandler : System.Windows.RoutedEvent * Delegate -> unit
override this.AddHandler : System.Windows.RoutedEvent * Delegate -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate)

매개 변수

routedEvent
RoutedEvent

처리할 라우트된 이벤트의 식별자입니다.

handler
Delegate

처리기 구현에 대한 참조입니다.

구현

설명

예외를 발생하지 않고 동일한 이벤트에 대해 동일한 처리기를 여러 번 추가할 수 있습니다. 그러나 처리기는 이벤트가 처리될 때 실제로 여러 번 호출됩니다. 따라서 이 동작이 처리기 구현에서 고려해야 하는 부작용을 어떻게 가질 수 있는지 고려합니다.

일반적으로 이 메서드를 사용하여 사용자 지정 라우트된 이벤트의 Microsoft .NET 이벤트 액세스 패턴에 대한 "add" 접근자의 구현을 제공합니다.

적용 대상

AddHandler(RoutedEvent, Delegate, Boolean)

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다. 이벤트 경로를 따라 다른 요소에서 처리된 것으로 이미 표시된 라우트된 이벤트에 대해 제공된 처리기를 호출하기 위해 handledEventsTootrue로 지정합니다.

public:
 void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
member this.AddHandler : System.Windows.RoutedEvent * Delegate * bool -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

매개 변수

routedEvent
RoutedEvent

처리할 라우트된 이벤트의 식별자입니다.

handler
Delegate

처리기 구현에 대한 참조입니다.

handledEventsToo
Boolean

라우트된 이벤트가 해당 이벤트 데이터에서 처리된 것으로 표시된 경우에도 처리기를 호출하도록 등록하려면 true이고, 라우트된 이벤트가 이미 처리된 것으로 표시된 경우 처리기를 호출하지 않는 기본 조건으로 등록하려면 false입니다.

기본값은 false입니다.

라우트된 이벤트를 다시 처리하도록 자주 요청하지 마세요.

예제

다음 예제에서는 를 사용하여 handledEventsTootrue페이지의 명명된 Initialized 요소 중 하나에 정의된 처리기를 연결하는 페이지의 이벤트에서 호출된 처리기를 구현합니다. 이 처리기는 경로에 있는 다른 요소가 경로의 처리 요소에 도달하기 전에 공유 이벤트 데이터를 처리된 것으로 표시한 경우에도 호출됩니다.

void PrimeHandledToo(object sender, EventArgs e)
{
    dpanel2.AddHandler(Button.ClickEvent, new RoutedEventHandler(GetHandledToo), true);
}
Private Sub PrimeHandledToo(ByVal sender As Object, ByVal e As EventArgs)
    dpanel2.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf GetHandledToo), True)
End Sub

설명

실용적인 방식으로 하위 수준 입력 이벤트를 처리하는 것은 복잡한 작업입니다. 많은 컨트롤은 특정 이벤트가 처리된 것으로 표시되고 다른 보다 직관적인 이벤트로 대체되는 동작을 구현합니다. 일반적으로 컨트롤은 플랫폼 입력 이벤트만 처리됨으로 표시합니다( 디자인 의도가 있는 경우에만 처리됨). 특정 시나리오에서 이러한 디자인 의도는 입력 이벤트의 특정 처리에 필요한 것이 아닐 수 있습니다. 처리기를 로 등록하는 것이 적절한 시나리오에 적합합니다 handledEventsTootrue . 그러나 당신은 일상적으로이 작업을 수행해서는 안됩니다. 처리 하는 경우에 모든 이벤트에 대 한 응답으로 처리기를 호출 애플리케이션 이벤트 처리 논리 복잡 하 게 됩니다. 처리기 논리가 상당한 경우 성능이 저하될 수 있습니다. 특정 컨트롤이 여전히 애플리케이션 논리를 사용 하 여 처리 하려는 이벤트를 처리 하는 개발 프로세스 중 이미 검색 위치 하는 경우 이미 처리 된 이벤트에 대 한 처리기를 연결의 사용을 예약 해야 합니다.

특정 이벤트 제어 조합의 클래스 처리 동작을 방지하는 또 다른 방법은 해당 이벤트의 미리 보기 대안을 사용하는 것입니다. 예를 들어 가 클래스 처리에 의해 처리된 것으로 표시된 경우 MouseLeftButtonDown 대신 에 대한 PreviewMouseLeftButtonDown 처리기를 추가할 수 있습니다.

예외를 발생하지 않고 동일한 이벤트에 대해 동일한 처리기를 여러 번 추가할 수 있습니다. 그러나 처리기는 이벤트가 처리될 때 실제로 여러 번 호출됩니다. 따라서 이 동작이 처리기 구현에서 고려해야 하는 부작용을 어떻게 가질 수 있는지 고려합니다.

일반적으로 이 메서드를 사용하여 사용자 지정 라우트된 이벤트의 Microsoft .NET 이벤트 액세스 패턴에 대한 "add" 접근자의 구현을 제공합니다.

적용 대상