다음을 통해 공유


UIElement.OnMouseDown(MouseButtonEventArgs) 메서드

정의

처리되지 않은 MouseDown 연결된 이벤트가 이 클래스에서 파생된 경로의 요소에 도달하면 호출됩니다. 이 이벤트에 대한 클래스 처리를 추가하려면 이 메서드를 구현합니다.

protected:
 virtual void OnMouseDown(System::Windows::Input::MouseButtonEventArgs ^ e);
protected virtual void OnMouseDown (System.Windows.Input.MouseButtonEventArgs e);
abstract member OnMouseDown : System.Windows.Input.MouseButtonEventArgs -> unit
override this.OnMouseDown : System.Windows.Input.MouseButtonEventArgs -> unit
Protected Overridable Sub OnMouseDown (e As MouseButtonEventArgs)

매개 변수

e
MouseButtonEventArgs

이벤트 데이터를 포함하는 MouseButtonEventArgs. 이 이벤트 데이터는 누른 마우스 단추와 처리된 상태에 대한 세부 정보를 보고합니다.

설명

마우스 단추 동작은 전용 입력 관리자도 처리합니다. 입력 및 명령 바인딩과 같은 마우스 단추 동작을 사용하는 다른 프로그래밍 기능은 일반적인 마우스 단추 동작으로 노출되기 전에 작업에 대한 처리기를 호출할 수 있습니다. 이러한 입력 시스템 기능이 Mouse.MouseDown 이벤트를 처리된 것으로 표시하면 OnMouseDown 호출되지 않습니다.

이 클래스 처리기를 사용하여 이벤트를 처리된 것으로 표시하는 경우 MouseLeftButtonDownMouseRightButtonDown이벤트에 영향을 미칠 수 있습니다. 이러한 이벤트 중 하나는 Mouse.MouseDown 수신할 때 수신 요소에서 발생할 수 있습니다.

이 이벤트를 클래스 처리에서 처리된 것으로 표시하면 하위 이벤트가 계속 발생합니다. 그러나 이벤트 데이터에서 처리된 상태를 전달합니다. 이벤트가 클래스 처리에서 처리되는 경우 처리기를 연결하기 위해 handledEventsTootrueAddHandler(RoutedEvent, Delegate, Boolean) 명시적으로 사용하지 않는 한 하위 인스턴스에 대한 인스턴스 처리기가 호출되지 않습니다. 클래스 처리기가 handledEventsTootrueRegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) 서명에 등록되지 않은 한 클래스 처리기도 호출되지 않습니다. OnMouseDown처리하면 클래스 처리가 가능한 모든 마우스 단추 아래로 동작을 차지함을 의미합니다. 이 동작은 원치 않을 수 있습니다. 따라서 이 가상 메서드를 사용하여 이벤트를 처리된 것으로 표시할 때는 주의해야 합니다.

각 단추별 직접 이벤트에는 가상 On* 메서드도 있습니다. 이러한 단추별 클래스 처리기를 재정의하는 것이 더 적절한지 여부를 고려합니다.

이 메서드에는 기본 구현이 없습니다. 상속의 중간 클래스가 이 메서드를 구현할 수 있으므로 구현에서 기본 구현을 호출하는 것이 좋습니다.

이 메서드의 목적은 CLR(공용 언어 런타임) 이벤트 패턴 On* 메서드와 유사합니다. 이 메서드는 인스턴스 처리기 대신 클래스 처리기를 설정하여 파생 클래스에서 일치하는 이벤트를 처리하는 방법을 제공합니다. 이 경우 일치하는 이벤트는 라우트된 이벤트입니다. 라우트된 이벤트는 처리기를 호출할 요소가 아닌 자식 요소에 의해 발생할 수 있으므로 On* 메서드의 구현 패턴은 라우트된 이벤트에 대해 다릅니다. 따라서 구현은 이벤트 데이터의 원본 속성을 검사해야 합니다. 대부분의 경우 이벤트를 다시 평가해서는 안 됩니다.

이 메서드를 재정의하거나 RegisterClassHandler클래스 처리기를 등록하여 이벤트가 이벤트 경로를 따라 수신될 때 UIElement 파생 클래스에서 프라이빗 클래스 처리기 메서드를 호출할 수 있습니다. 클래스 처리가 적절한 시나리오 중 하나는 이벤트 데이터를 조작하고 라우트된 이벤트를 처리된 것으로 표시하는 것입니다.

적용 대상

추가 정보