UIElement.OnMouseDown(MouseButtonEventArgs) Methode

Definition

Wird aufgerufen, wenn ein nicht behandeltes MouseDown angefügtes Ereignis ein Element in seiner Route erreicht, die von dieser Klasse abgeleitet wird. Implementieren Sie diese Methode, um die Klassenbehandlung für dieses Ereignis hinzuzufügen.

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)

Parameter

e
MouseButtonEventArgs

Die MouseButtonEventArgs, die die Ereignisdaten enthält. Mit diesen Ereignisdaten werden Details zu der gedrückten Maustaste und dem behandelten Zustand gemeldet.

Hinweise

Aktionen mit der Maustaste werden auch von einem dedizierten Eingabe-Manager behandelt. Andere Programmierfeatures, die auf Aktionen mit der Maustaste basieren, z. B. Eingabe- und Befehlsbindungen, können Handler für die Aktion aufrufen, bevor sie als allgemeine Maustastenaktion verfügbar gemacht wird. Wenn diese Eingabesystemfeatures das Mouse.MouseDown Ereignis als behandelt kennzeichnen, wird OnMouseDown nicht aufgerufen.

Wenn Sie diesen Klassenhandler verwenden, um das Ereignis als behandelt zu markieren, wirken sie sich möglicherweise auf die folgenden Ereignisse aus: MouseLeftButtonDown und MouseRightButtonDown. Eines dieser Ereignisse kann für das empfangende Element ausgelöst werden, wenn Mouse.MouseDown empfangen wird.

Wenn Sie dieses Ereignis als in der Klassenbehandlung behandelt markieren, werden Unterereignisse weiterhin ausgelöst. Sie übergeben jedoch den behandelten Zustand in den Ereignisdaten. Wenn das Ereignis in der Klassenbehandlung behandelt wird, werden Instanzhandler für die Unterereignisse nicht aufgerufen, es sei denn, Sie verwenden AddHandler(RoutedEvent, Delegate, Boolean) explizit mit handledEventsTootrue, um Handler anzufügen. Klassenhandler werden auch nicht aufgerufen, es sei denn, diese Klassenhandler wurden mit der RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) Signatur mit handledEventsTootrueregistriert. Durch die Behandlung von OnMouseDownsetzen Sie voraus, dass ihre Klassenverarbeitung für alle möglichen Aktionen der Maustaste nach unten berücksichtigt wurde. Dieses Verhalten kann unerwünschter sein; Verwenden Sie daher Vorsicht, wenn Sie diese virtuelle Methode verwenden, um Ereignisse als behandelt zu markieren.

Jedes der schaltflächenspezifischen direkten Ereignisse verfügt auch über eine virtuelle On*-Methode; Überlegen Sie, ob das Überschreiben dieser schaltflächenspezifischen Klassenhandler möglicherweise geeigneter ist.

Diese Methode hat keine Standardimplementierung. Da eine Zwischenklasse in der Vererbung diese Methode implementieren kann, empfehlen wir, die Basisimplementierung in Ihrer Implementierung aufzurufen.

Der Zweck dieser Methode ähnelt dem On*-Ereignismuster der Common Language Runtime (CLR): Diese Methode bietet die Möglichkeit, das übereinstimmende Ereignis von abgeleiteten Klassen zu behandeln, indem ein Klassenhandler anstelle eines Instanzhandlers erstellt wird. In diesem Fall ist das übereinstimmende Ereignis ein Routingereignis. Das Implementierungsmuster der On*-Methoden unterscheidet sich für Routingereignisse, da ein routingfähiges Ereignis von einem untergeordneten Element ausgelöst werden kann, was nicht unbedingt das Element ist, das Handler aufruft. Daher muss Ihre Implementierung die Quelleigenschaften der Ereignisdaten untersuchen. Es sollte nicht versuchen, das Ereignis in den meisten Fällen erneut zu reraise.

Entweder durch Überschreiben dieser Methode oder durch Registrieren von Klassenhandlern mit RegisterClassHandlerkönnen abgeleitete Klassen von UIElement private Klassenhandlermethoden aufrufen, wenn das Ereignis entlang der Ereignisroute empfangen wird. Ein Szenario, in dem die Klassenbehandlung geeignet ist, besteht darin, die Ereignisdaten zu bearbeiten und das Routingereignis als behandelt zu markieren.

Gilt für:

Weitere Informationen