private void Control_DragDrop(object sender, DragEventArgs e) { try { if (e.Data.GetDataPresent(typeof(DragDropItem <TControl, T>))) { DragDropItem <TControl, T> d = (DragDropItem <TControl, T>)e.Data.GetData(typeof(DragDropItem <TControl, T>)); TControl pointedParent = (TControl)sender; MoveItemInternal(pointedParent, d, e, true); } } catch (Exception ex) { LOG.Error("Control_DragDrop - An error occurred while drag dropping", ex); } }
private void Control_DragOver(object sender, DragEventArgs e) { try { if (e.Data.GetDataPresent(typeof(DragDropItem <TControl, T>))) { DragDropItem <TControl, T> d = (DragDropItem <TControl, T>)e.Data.GetData(typeof(DragDropItem <TControl, T>)); TControl pointedParent = (TControl)sender; OnDragMove(new DragMoveEventArgs <TControl, T>(d.DragParent, d.DragItem, d.DragItemIndex, d.DragStart, new Point(e.X, e.Y))); MoveItemInternal(pointedParent, d, e, false); } } catch (Exception ex) { LOG.Error("Control_DragOver - An error occurred while dragging over", ex); } }
private bool MoveItemInternal(TControl pointedParent, DragDropItem <TControl, T> d, DragEventArgs e, bool dropping) { try { Point p = new Point(e.X, e.Y); T pointedItem; int pointedItemIndex; if (GetItemFromPoint(pointedParent, pointedParent.PointToClient(p), out pointedItem, out pointedItemIndex) && e.AllowedEffect == DragDropEffects.Move) { OnDragMoveOver(new DragMoveOverEventArgs <TControl, T>(d.DragParent, d.DragItem, d.DragItemIndex, d.DragStart, p, pointedParent, pointedItem, pointedItemIndex)); if (AllowDrop(d.DragParent, d.DragItem, d.DragItemIndex, pointedParent, pointedItem, pointedItemIndex)) { e.Effect = DragDropEffects.Move; if (dropping || !MoveOnDragDrop) { MoveItem(d.DragParent, d.DragItem, d.DragItemIndex, pointedParent, pointedItem, pointedItemIndex); d.UpdateSwapped(pointedParent, pointedItemIndex); return(true); } else { return(false); } } } } catch (Exception ex) { LOG.Error("MoveItemInternal - An error occurred while moving item", ex); } e.Effect = DragDropEffects.None; return(false); }
private void Control_MouseMove(object sender, MouseEventArgs e) { try { if (_mouseDown) { TControl parent = (TControl)sender; Point p = parent.PointToScreen(e.Location); if (Math.Sqrt(Math.Pow(p.X - _mouseDownLocation.X, 2) + Math.Pow(p.Y - _mouseDownLocation.Y, 2)) >= DRAG_THRESHOLD) { T item; int itemIndex; if (GetItemFromPoint(parent, e.Location, out item, out itemIndex) && ItemsEqual(_mouseDownParent, _mouseDownItem, _mouseDownItemIndex, parent, item, itemIndex)) { _mouseDown = false; OnDragStart(new DragStartEventArgs <TControl, T>(parent, item, itemIndex, _mouseDownLocation)); DragDropItem <TControl, T> dragDropItem = new DragDropItem <TControl, T>(parent, item, itemIndex, _mouseDownLocation); DragDropEffects effects = parent.DoDragDrop(dragDropItem, DragDropEffects.Move); OnDragEnd(new DragEndEventArgs <TControl, T>(parent, item, itemIndex, _mouseDownLocation, Control.MousePosition, effects)); ClearDragDrop(); } else { ClearDragDrop(); } } } } catch (Exception ex) { LOG.Error("Control_MouseMove - An error occurred while mousing moving", ex); } }
private void Control_MouseMove(object?sender, MouseEventArgs e) { try { if (_mouseDown) { TControl?parent = sender as TControl; if (parent == null) { return; } Point p = parent.PointToScreen(e.Location); if (Math.Sqrt(Math.Pow(p.X - _mouseDownLocation.X, 2) + Math.Pow(p.Y - _mouseDownLocation.Y, 2)) >= DRAG_THRESHOLD) { T item; if (GetItemFromPoint(parent, e.Location, out item !, out int itemIndex) && ItemsEqual(_mouseDownParent !, _mouseDownItem !, _mouseDownItemIndex, parent, item, itemIndex)) { _mouseDown = false; OnDragStart(new DragStartEventArgs <TControl, T>(parent, item, itemIndex, _mouseDownLocation)); DragDropItem <TControl, T> dragDropItem = new DragDropItem <TControl, T>(parent, item, itemIndex, _mouseDownLocation); DragDropEffects effects = parent.DoDragDrop(dragDropItem, DragDropEffects.Move); OnDragEnd(new DragEndEventArgs <TControl, T>(parent, item, itemIndex, _mouseDownLocation, Control.MousePosition, effects)); ClearDragDrop(); } else { ClearDragDrop(); } } } }