void WinFormsControl_MouseUp(object sender, swf.MouseEventArgs e) { Control.CaptureMouse(); MouseEventArgs eto = e.ToEto(WinFormsControl); swi.MouseButton changed = eto.ToWpf().ChangedButton; var args = new swi.MouseButtonEventArgs(swi.InputManager.Current.PrimaryMouseDevice, Environment.TickCount, changed) { RoutedEvent = swi.Mouse.MouseUpEvent, Source = Control }; Control.ReleaseMouseCapture(); Control.RaiseEvent(args); }
void WinFormsControl_MouseDown(object sender, swf.MouseEventArgs e) { // Contrary to most WPF controls, the WindowsFormsHost class seems // to prevent correct mouse event data from being obtained (e.g. // which buttons were pressed, and at what location). The solution // is capturing the mouse long enough to build args... Control.CaptureMouse(); MouseEventArgs eto = e.ToEto(WinFormsControl); swi.MouseButton changed = eto.ToWpf().ChangedButton; var args = new swi.MouseButtonEventArgs(swi.InputManager.Current.PrimaryMouseDevice, Environment.TickCount, changed) { RoutedEvent = swi.Mouse.MouseDownEvent, Source = Control }; // ...but releasing it before continuing, in case the mouse event in // question is one that shouldn't hold onto the mouse. Control.ReleaseMouseCapture(); Control.RaiseEvent(args); }