Etienne Charland
Etienne Charland

Reputation: 4034

WPF Raise DoubleClick Event

I have a class derived from WindowsFormsHost that listens to WinForms mouse events. It works fine for single clicks but is there any way to trigger double client events? ClickCount is read-only so I can't set it, and raising Control.MouseDoubleClickEvent doesn't propagate it. Any other idea?

private void OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
    MouseButton? wpfButton = ConvertToWpf(e.Button);
    if (!wpfButton.HasValue)
        return;

    RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, wpfButton.Value) {
        RoutedEvent = Mouse.MouseDownEvent,
        Source = this
        //ClickCount = 2  // read-only
    });

    //RaiseEvent(new RoutedEventArgs() {  // won't propagate
    //  RoutedEvent = System.Windows.Controls.Control.MouseDoubleClickEvent,
    //  Source = this
    //});
}

Upvotes: 1

Views: 2175

Answers (1)

mm8
mm8

Reputation: 169390

Here is you would raise a MouseDoubleClickEvent programmatically in WPF:

MouseButtonEventArgs doubleClickEvent = new MouseButtonEventArgs(Mouse.PrimaryDevice, (int)DateTime.Now.Ticks, MouseButton.Left);
doubleClickEvent.RoutedEvent = Control.MouseDoubleClickEvent;
doubleClickEvent.Source = this;
RaiseEvent(doubleClickEvent);

Upvotes: 3

Related Questions