protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); if (_currentGrip != null) { _currentGrip.Update?.Invoke((SizeF)(e.Location - _startDrag)); _startDrag = _currentGrip.Location().Center; return; } var bounds = SizeBounds; var outer = RectangleF.Inflate(bounds, GripPadding * 2); IsSizing = outer.Contains(e.Location) && !bounds.Contains(e.Location); var grip = GetGrip(e.Location); if (grip != _hoverGrip) { _hoverGrip = grip; ToolTip = grip?.ToolTip; Invalidate(); } Cursor = grip?.Cursor ?? Cursors.Default; Invalidate(); }