UIElement.AddHandler UIElement.AddHandler UIElement.AddHandler Method

정의

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

오버로드

AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate)

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean)

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. 이벤트 경로를 따라 다른 요소에서 처리된 것으로 이미 표시된 라우트된 이벤트에 대해 제공된 처리기를 호출하기 위해 handledEventsTootrue로 지정합니다.Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate)

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

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

매개 변수

routedEvent
RoutedEvent RoutedEvent RoutedEvent

처리할 라우트된 이벤트의 식별자입니다.An identifier for the routed event to be handled.

handler
Delegate Delegate Delegate

처리기 구현에 대한 참조입니다.A reference to the handler implementation.

구현

설명

예외가 발생 하지 않고 동일한 이벤트에 대 한 동일한 처리기를 여러 번 추가할 수 있습니다.You can add the same handler for the same event multiple times without raising an exception. 그러나 처리기는 실제로 이벤트를 처리 하는 경우 여러 번 호출 됩니다.However, the handler is actually invoked multiple times when the event is handled. 따라서이 동작은 처리기 구현에서 고려해 야 하는 부작용이 있을 수 있습니다 어떻게 하는 것이 좋습니다.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

에 대 한 "추가" 접근자의 구현을 제공 하도록이 메서드를 사용 하 여 Microsoft .NETMicrosoft .NET 사용자 지정 라우트된 이벤트의 이벤트 액세스 패턴입니다.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean)

지정된 라우트된 이벤트에 대해 라우트된 이벤트 처리기를 추가하여 해당 처리기를 현재 요소의 처리기 컬렉션에 추가합니다.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. 이벤트 경로를 따라 다른 요소에서 처리된 것으로 이미 표시된 라우트된 이벤트에 대해 제공된 처리기를 호출하기 위해 handledEventsTootrue로 지정합니다.Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

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

매개 변수

routedEvent
RoutedEvent RoutedEvent RoutedEvent

처리할 라우트된 이벤트의 식별자입니다.An identifier for the routed event to be handled.

handler
Delegate Delegate Delegate

처리기 구현에 대한 참조입니다.A reference to the handler implementation.

handledEventsToo
Boolean Boolean Boolean

라우트된 이벤트가 해당 이벤트 데이터에서 처리된 것으로 표시된 경우에도 처리기를 호출하도록 등록하려면 true이고, 라우트된 이벤트가 이미 처리된 것으로 표시된 경우 처리기를 호출하지 않는 기본 조건으로 등록하려면 false입니다.true to register the handler such that it is invoked even when the routed event is marked handled in its event data; false to register the handler with the default condition that it will not be invoked if the routed event is already marked handled.

기본값은 false입니다.The default is false.

라우트된 이벤트를 다시 처리하도록 자주 요청하지 마세요.Do not routinely ask to rehandle a routed event.

예제

다음 예제에서 호출 하는 처리기를 구현 합니다 Initialized 페이지에서 사용 하는 페이지의 명명된 된 요소 중 하나에 정의 된 처리기를 연결 하는 이벤트 handledEventsToo true합니다.The following example implements a handler invoked on the Initialized event on a page that attaches a defined handler to one of the named elements on the page using handledEventsToo true. 경로의 다른 요소 경로에서 처리가 필요한 요소에 도달 하기 전에 처리 된 것으로 공유 된 이벤트 데이터를 표시 하는 경우에이 처리기를 호출할 것입니다.This handler would be invoked even if another element along the route marked the shared event data as handled before reaching the handling element in the route.

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

설명

하위 수준 입력된 이벤트를 효율적으로 처리 하는 것은 복잡 한 작업입니다.Processing low-level input events in a practical way is a complex task. 여기서 특정 이벤트를 처리 됨으로 표시 되 고 다른 직관적인 이벤트에 의해 대체 됩니다 동작을 구현 하는 다양 한 컨트롤입니다.Many controls implement behavior where a certain event is marked as handled, and is replaced by another more intuitive event. 일반적으로 컨트롤을 일부 디자인 의도 한 경우 처리에 플랫폼 입력된 이벤트를 표시 됩니다.Generally, a control will only mark a platform input event as handled if there is some design intention for doing so. 특정 시나리오에서 이러한 디자인 의도 되지 않을 수 있습니다에 특정 입력된 이벤트 처리에 필요 합니다.In certain scenarios, those design intentions might not be what your particular handling of the input event requires. 등록 하는 이러한 시나리오는 처리기 handledEventsToo 으로 true 적합 합니다.It is for these scenarios that registering handlers with handledEventsToo as true is appropriate. 하지만 정기적으로 없습니다 수행 해야 합니다.But you should not do this routinely. 처리 하는 경우에 모든 이벤트에 대 한 응답으로 처리기를 호출 애플리케이션 이벤트 처리 논리 복잡 하 게 됩니다.Invoking handlers in response to all events even if handled will complicate your own application event processing logic. 처리기 논리는 많은 경우 성능 저하를 발생할 수 있습니다.You may see a decrease in performance if the handler logic is substantial. 특정 컨트롤이 여전히 애플리케이션 논리를 사용 하 여 처리 하려는 이벤트를 처리 하는 개발 프로세스 중 이미 검색 위치 하는 경우 이미 처리 된 이벤트에 대 한 처리기를 연결의 사용을 예약 해야 합니다.You should reserve the use of attaching handlers for already-handled events for situations where you have already discovered during the development process that certain controls are handling events that you still want to handle with application logic.

특정 이벤트 컨트롤 조합의 동작을 처리 하는 클래스를 방지 하는 것에 대 한 또 다른 방법은 해당 이벤트의 미리 보기 대신을 사용 하는 것입니다.Another technique for avoiding the class handling behavior of certain event-control combinations is to use that event's preview alternative. 예를 들어 있으면 MouseLeftButtonDown 처리 됨으로 표시 되 클래스 처리를 통해 수 있습니다에 대 한 처리기를 추가 하려면 PreviewMouseLeftButtonDown 대신 합니다.For example, if MouseLeftButtonDown is marked handled by class handling, you might be able to add handlers for PreviewMouseLeftButtonDown instead.

예외가 발생 하지 않고 동일한 이벤트에 대 한 동일한 처리기를 여러 번 추가할 수 있습니다.You can add the same handler for the same event multiple times without raising an exception. 그러나 처리기는 실제로 이벤트를 처리 하는 경우 여러 번 호출 됩니다.However, the handler is actually invoked multiple times when the event is handled. 따라서이 동작은 처리기 구현에서 고려해 야 하는 부작용이 있을 수 있습니다 어떻게 하는 것이 좋습니다.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

에 대 한 "추가" 접근자의 구현을 제공 하도록이 메서드를 사용 하 여 Microsoft .NETMicrosoft .NET 사용자 지정 라우트된 이벤트의 이벤트 액세스 패턴입니다.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

적용 대상