UIElement.RemoveHandler(RoutedEvent, Delegate) 메서드

정의

지정된 라우트된 이벤트 처리기를 이 요소에서 제거합니다.Removes the specified routed event handler from this element.

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

매개 변수

routedEvent
RoutedEvent

처리기가 연결된 라우팅된 이벤트의 식별자입니다.The identifier of the routed event for which the handler is attached.

handler
Delegate

이 요소의 이벤트 처리기 컬렉션에서 제거할 특정 처리기 구현입니다.The specific handler implementation to remove from the event handler collection on this element.

구현

예제

다음 예제에서는 RemoveHandler을 이벤트 래퍼 정의의 일부로 사용 합니다.The following example uses RemoveHandler as part of an event wrapper definition.

public static readonly RoutedEvent TapEvent = EventManager.RegisterRoutedEvent(
    "Tap", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyButtonSimple));

// Provide CLR accessors for the event
public event RoutedEventHandler Tap
{
        add { AddHandler(TapEvent, value); } 
        remove { RemoveHandler(TapEvent, value); }
}
Public Shared ReadOnly TapEvent As RoutedEvent = EventManager.RegisterRoutedEvent("Tap", RoutingStrategy.Bubble, GetType(RoutedEventHandler), GetType(MyButtonSimple))

' Provide CLR accessors for the event
Public Custom Event Tap As RoutedEventHandler
    AddHandler(ByVal value As RoutedEventHandler)
        Me.AddHandler(TapEvent, value)
    End AddHandler

    RemoveHandler(ByVal value As RoutedEventHandler)
        Me.RemoveHandler(TapEvent, value)
    End RemoveHandler

    RaiseEvent(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Me.RaiseEvent(e)
    End RaiseEvent
End Event

설명

이 API를 사용 하는 가장 일반적인 시나리오는 사용자 지정 라우트된 이벤트와 연결 된 CLR(공용 언어 런타임)common language runtime (CLR) "래퍼" 이벤트를 구현 하는 경우, 특히 CLRCLR 수준에서 처리기에 대해 "제거" 논리를 구현 하는 경우입니다.The most common scenario for using this API is when you implement the CLR(공용 언어 런타임)common language runtime (CLR) "wrapper" event that is associated with a custom routed event, specifically when you implement the "remove" logic for handlers at the CLRCLR level. 이 설명 섹션 뒤에 나오는 예제에서는이 시나리오를 보여 줍니다.The example that follows this remarks section illustrates this scenario.

메서드 호출의 입력 매개 변수와 일치 하는 조건에 등록 된 처리기가 없는 경우이 메서드를 호출 해도 아무런 효과가 없습니다.Calling this method has no effect if there were no handlers registered with criteria that matches the input parameters for the method call.

조건에 일치 하는 처리기가 둘 이상 연결 되어 있으면 이벤트 처리기 저장소의 첫 번째 처리기만 제거 됩니다.If more than one handler is attached that matched the criteria, only the first handler in the event handler store is removed. 이 동작은 -= 연산자의 CLRCLR 동작과 일치 합니다.This behavior is consistent with CLRCLR behavior of the -= operator.

routedEvent 또는 handler 모두 null수 없습니다.Neither routedEvent nor handler may be null. null로 두 값을 제공 하려고 하면 예외가 발생 합니다.Attempting to provide either value as null will raise an exception.

이 메서드는 이미 처리 된 이벤트를 처리할 수 있는 AddHandler(RoutedEvent, Delegate, Boolean) 서명을 사용 하 여 처리기를 처음 추가 하는 경우 제공 되는 handledEventsToo 매개 변수 정보를 무시 합니다.This method ignores the handledEventsToo parameter information, which is provided if the handler was first added with the AddHandler(RoutedEvent, Delegate, Boolean) signature that enables handling of already-handled events. 두 가지 유형의 처리기가 제거 됩니다.Either type of handler is removed.

적용 대상

추가 정보