/// <summary> /// Returns true to specify the event has been handled and should not be processed any further. /// </summary> public bool OnMouseMove(MouseEventArgs e) { if (IsBuildingObject) { _pane.Focus(); // If we refresh, the value of the incoming mouse position lags with 1 iteration. _pane.Invalidate(); return(false); } bool refreshRequired = false; PointF drawingSpaceLocation = _pane.GraphicsWrapper.ActualSpaceToDrawingSpace(e.Location, true); // Handle mouse hover requests. foreach (DynamicCustomObject dynamicObject in _dynamicCustomObjects) { if (dynamicObject.SetMouseHover(drawingSpaceLocation)) { refreshRequired = true; } } // Handle drag. if (_selectedDynamicCustomObjects.Count > 0 && _dragLastDrawingSpaceMouseLocation.HasValue) { PointF drawingSpaceDragVector = new PointF(drawingSpaceLocation.X - _dragLastDrawingSpaceMouseLocation.Value.X, drawingSpaceLocation.Y - _dragLastDrawingSpaceMouseLocation.Value.Y); foreach (DynamicCustomObject dynamicObject in _selectedDynamicCustomObjects) { dynamicObject.Drag(drawingSpaceDragVector); } _dragLastDrawingSpaceMouseLocation = drawingSpaceLocation; refreshRequired = true; } if (refreshRequired) { _pane.Refresh(); } return(false); }