예제 #1
0
        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);
            }
        }
예제 #2
0
 private void InputFilesListView_ItemDrag(object sender, ItemDragEventArgs e)
 => InputFilesListView.DoDragDrop(e.Item, DragDropEffects.Move);