Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

UIElement.OnMouseDown-Methode: (MouseButtonEventArgs)

 

Veröffentlicht: Oktober 2016

Wird aufgerufen, wenn ein nicht behandeltes angefügtes Mouse.MouseDown-Ereignis beim Durchlauf ein von dieser Klasse abgeleitetes Element erreicht. Implementieren Sie diese Methode, um eine Klassenbehandlung für dieses Ereignis hinzuzufügen.

Namespace:   System.Windows
Assembly:  PresentationCore (in PresentationCore.dll)

protected virtual void OnMouseDown(
	MouseButtonEventArgs e
)

Parameter

e
Type: System.Windows.Input.MouseButtonEventArgs

Das MouseButtonEventArgs, das die Ereignisdaten enthält. Diese Ereignisdaten melden Details zur Maustaste, die gedrückt wurde, und zum behandelten Zustand.

Aktionen der Maus werden auch von einem speziellen Eingabe-Manager behandelt. Andere Features für die Programmierung, die Aktionen der Maus, z. B. Eingabe abhängig und Bindungen, Befehl möglicherweise Handler für die Aktion aufrufen, bevor er als allgemeine Maus Schaltfläche verfügbar gemacht wird. Markieren Sie diese Eingaben die Mouse.MouseDown -Ereignis als behandelt, OnMouseDown wird nicht aufgerufen.

Wenn Sie diese Klassenhandler verwenden, um das Ereignis als behandelt markiert, Sie möglicherweise Folgendes betreffen: MouseLeftButtonDown und MouseRightButtonDown. Beide Ereignisse können für das empfangende Element ausgelöst werden beim Mouse.MouseDown empfangen wird.

Wenn Sie dieses Ereignis in der Klassenbehandlung als behandelt markiert haben, werden dennoch Unterereignisse ausgelöst. Allerdings werden die behandelten Zustand in den Ereignisdaten übergeben. Wenn das Ereignis in der Klassenbehandlung behandelt wird, Instanzhandler für die Unterereignisse werden nicht aufgerufen, sofern Sie nicht explizit AddHandler(RoutedEvent, Delegate, Boolean) mit handledEventsToo true um Handler anzufügen.  Klassen-Handler werden ebenfalls nicht aufgerufen, wenn diese wurden mit registriert die RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) -Signatur mit handledEventsToo true Durch Behandlung OnMouseDown, Sie sind somit den Eindruck erwecken, dass die Klassenbehandlung für alle möglichen Aktionen mit gedrückter berücksichtigt. Dieses Verhalten kann unerwünscht sein. Daher mit Bedacht vor, wenn Sie diese virtuelle Methode verwenden, um die Ereignisse als behandelt markiert.

Jedes der direkten Schaltfläche-spezifische Ereignisse verfügt zudem über ein virtuelles auf *-Methode. Überlegen Sie, ob überschreiben diese Schaltfläche-spezifische Klassenhandler besser geeignet sein könnte.

Diese Methode hat keine Standardimplementierung. Da eine Zwischenklasse in der Vererbung diese Methode implementiert wird kann, wird empfohlen, dass Sie in Ihrer Implementierung die basisimplementierung aufrufen.

Der Zweck dieser Methode ähnelt der Common Language Runtime (CLR) Ereignismuster auf * Methoden: Diese Methode bietet die Möglichkeit, das entsprechende Ereignis über abgeleitete Klassen zu behandeln, indem Sie einen Klassenhandler anstelle einer Instanzenhandler einrichten. In diesem Fall ist das entsprechende Ereignis ein Routingereignis. Das Implementierungsmuster der On *-Methoden ist für Routingereignisse unterschiedlich, da ein Routingereignis von einem untergeordneten Element ausgelöst werden kann, wird nicht unbedingt das Element, das Handler aufruft. Daher muss die Implementierung die Quelleigenschaften der Ereignisdaten untersuchen. Sie sollten nicht in den meisten Fällen das Ereignis erneut auszulösen.

Indem Sie diese Methode überschreiben oder registrieren-Klasse Handler mit RegisterClassHandler, abgeleitete Klassen von UIElement können beim Empfang des Ereignisses auf der Ereignishandlermethoden private Klasse aufrufen. Ein Szenario, in dem Klassenbehandlung geeignet ist, werden die Ereignisdaten bearbeiten und das Routingereignis als behandelt markiert ab.

.NET Framework
Verfügbar seit 3.0
Zurück zum Anfang
Anzeigen: