/// <summary> /// Returns true to specify the event has been handled and should not be processed any further. /// </summary> public bool OnMouseDown(MouseEventArgs e) { if (e.Button == MouseButtons.Left) { PointF drawingSpaceLocation = _pane.GraphicsWrapper.ActualSpaceToDrawingSpace(e.Location, true); if (_currentObjectBuilt != null) {// Building new object. if (_currentObjectBuilt.AddBuildingPoint(drawingSpaceLocation)) { Add(_currentObjectBuilt); DynamicObjectBuiltEvent(this, _currentObjectBuilt); _currentObjectBuilt = null; } return(true); } else {// Selection. bool result = false; // First check if we must start dragging. foreach (DynamicCustomObject dynamicObject in _selectedDynamicCustomObjects) { if (dynamicObject.TrySelect(_pane.GraphicsWrapper.DrawingSpaceTransform, drawingSpaceLocation, _defaultAbsoluteSelectionMargin, false)) {// One of the selected objects was clicked on so start dragging. _dragLastDrawingSpaceMouseLocation = drawingSpaceLocation; result = true; break; } } //if (_dragLastDrawingSpaceMouseLocation.HasValue == false) //{// Only if dragging is not running try to perform typical selection. // foreach (DynamicCustomObject dynamicObject in _dynamicCustomObjects) // { // if (dynamicObject.TrySelect(_pane.DrawingSpaceTransform, drawingSpaceLocation, _defaultAbsoluteSelectionMargin, !_pane.IsControlKeyDown)) // { // if (result == true) // {// Only one NEW selection per turn so deny this selection, // // but keep cycling to perform needed deselections. // dynamicObject.Selected = false; // } // result = true; // } // } //} if (result) { _pane.Invalidate(); } UpdateSelectedObjects(); return(result); } } return(false); }