Programmgesteuertes MouseLeftButtonDown-Ereignis ausgelöst

8

Ich versuche manuell ein MouseLeftButtonDown-Ereignis in einem WPF-Steuerelement programmgesteuert zu erstellen, da ich das Microsoft Surface SDK verwende, das nicht MouseLeftButtonDown-Ereignisse, sondern ContactDown-Ereignisse auslöst. Im Grunde versuche ich das MouseLeftButtonDown-Ereignis auf das Steuerelement herunter zu schieben, um das richtige Verhalten auf dem Steuerelement auszulösen, während ein ContactDown-Ereignis behandelt wird.

Ich vermute, dass ich irgendwie die RaiseEvent-Methode für das Steuerelement verwenden muss, um dies mit MouseButtonEventArgs zu tun, aber ich habe einige Probleme, die Parameter herauszufinden.

Vielen Dank im Voraus für Ihre Hilfe!

    
RajenK 13.06.2010, 20:44
quelle

3 Antworten

5

Sie können Maus- und Schlüsselereignisse mit dem Win32-Interop spoofieren. Untersuchen Sie die SendInput-Funktion auf MSDN / pinvoke.net .

Beachten Sie, dass dadurch das System und andere Anwendungen denken, dass die Maus tatsächlich geklickt wurde. Wenn Sie nur ein WPF-Ereignis initiieren möchten, versuchen Sie RaiseEvent( new RoutedEventArgs( UIElement.MouseLeftButtonDownEvent ) ) .

    
devios1 13.06.2010, 21:58
quelle
2

Der Wunsch, ein bestimmtes Ereignis in einem Steuerelement auszulösen, ist häufig ein Indikator für ein Designproblem im Code. Ereignishandler sollten Verhalten auslösen, nicht ausführen . Ich würde vorschlagen, dass Sie den Code, der die vom Ereignishandler MouseLeftButtonDown ausgelöste Aktion ausführt, in eine separate Methode verschieben. Dann kann dieselbe Methode vom ContactDown -Ereignishandler aufgerufen werden.

    
Fredrik Mörk 13.06.2010 20:49
quelle
2
%Vor%

So feuere ich das Ereignis in meinem Testcode ab.

    
viktorg 15.12.2011 15:00
quelle