private void InputFilesListView_DragDrop(object sender, DragEventArgs e) { if (InputFilesListView.SelectedItems.Count > 1) { throw new ApplicationException("Only single drag and drop is supported."); } if (InputFilesListView.SelectedItems.Count < 1) { return; } var dragItem = InputFilesListView.SelectedItems[0]; var point = InputFilesListView.PointToClient(new Point(e.X, e.Y)); var dropItem = InputFilesListView.GetItemAt(point.X, point.Y); if (dragItem == dropItem) { return; } var clone = (ListViewItem)dragItem.Clone(); var checkedItem = CoverSheetIndex == -1 ? null : dragItem.Index == CoverSheetIndex ? clone : InputFilesListView.Items[CoverSheetIndex]; if (dropItem == null) { InputFilesListView.Items.Add(clone); } else { InputFilesListView.Items.Insert( dropItem.Index + (dragItem.Index < dropItem.Index ? 1 : 0), clone); } InputFilesListView.Items.Remove(dragItem); if (checkedItem != null) { CoverSheetIndex = InputFilesListView.Items.IndexOf(checkedItem); } }
private void InputFilesListView_ItemDrag(object sender, ItemDragEventArgs e) => InputFilesListView.DoDragDrop(e.Item, DragDropEffects.Move);