private void Canvas_MouseUp(object sender, MouseEventArgs e) { canvas.Focus(); if (e.Button == MouseButtons.Left && selectionBegin) { canvas.UnselectAll(); PointF selectionStart = selectionBox.Points[0]; PointF selectionEnd = selectionBox.Points[2]; PointF selectionOrigin = new PointF(); SizeF selectionSize = new SizeF(); selectionSize.Width = Math.Abs(selectionEnd.X - selectionStart.X); selectionSize.Height = Math.Abs(selectionEnd.Y - selectionStart.Y); if (selectionEnd.X > selectionStart.X) { if (selectionEnd.Y > selectionStart.Y) { selectionOrigin.X = selectionStart.X; selectionOrigin.Y = selectionStart.Y; } else { selectionOrigin.X = selectionStart.X; selectionOrigin.Y = selectionEnd.Y; } } else { if (selectionEnd.Y > selectionStart.Y) { selectionOrigin.X = selectionEnd.X; selectionOrigin.Y = selectionStart.Y; } else { selectionOrigin.X = selectionEnd.X; selectionOrigin.Y = selectionEnd.Y; } } RectangleF rect = new RectangleF(selectionOrigin.X, selectionOrigin.Y, selectionSize.Width, selectionSize.Height); float square = selectionSize.Width * selectionSize.Height; if (square >= 4.0F) { List <CanvasItem> items = canvas.BoxTest(rect); if (items.Count != 0) { foreach (var item in items) { item.Select(); } canvas.Invalidate(); } } canvas.RemoveItem(selectionBox); selectionBox = null; selectionBegin = false; canvas.Invalidate(); } else if (e.Button == MouseButtons.Left && draggingBegin) { draggingBegin = false; canvas.Cursor = Cursors.Default; } else if (e.Button == MouseButtons.Right && scrollingBegin) { scrollingBegin = false; canvas.Cursor = Cursors.Default; } }