/// <summary> /// ドラッグ開始時の処理 /// </summary> protected override void OnItemDrag(ItemDragEventArgs e) { base.OnItemDrag(e); // ドラッグアンドドロップによる項目入れ替えが許可されていなければ何もしない if (!AllowItemReorder) { return; } // 選択項目がなければ何もしない if (SelectedItems.Count == 0) { return; } // 項目のインデックスを保存する DragIndices.AddRange(SelectedIndices.Cast <int>()); // ドラッグアンドドロップを開始する DoDragDrop(this, DragDropEffects.Move); }
/// <summary> /// マウスダウン時の処理 /// </summary> /// <param name="e"></param> protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); // ドラッグアンドドロップによる項目入れ替えが許可されていなければ何もしない if (!AllowItemReorder) { return; } // カーソル位置の項目が選択されていなければ何もしない int index = IndexFromPoint(e.X, e.Y); if (index < 0) { return; } if (!SelectedIndices.Contains(index)) { return; } // 左ボタンダウンでなければドラッグ状態を解除する if (e.Button != MouseButtons.Left) { _dragPoint = Point.Empty; DragIndices.Clear(); return; } // ドラッグ開始位置を設定する _dragPoint = new Point(e.X, e.Y); // 項目のインデックスを保存する DragIndices.AddRange(SelectedIndices.Cast <int>()); }
/* ----------------------------------------------------------------- */ /// /// MoveItems /// /// <summary> /// 選択されている項目を移動します。 /// </summary> /// /* ----------------------------------------------------------------- */ public void MoveItems(int offset) => MoveItems(SelectedIndices.Cast <int>(), offset);
/* ----------------------------------------------------------------- */ /// /// RemoveItems /// /// <summary> /// 選択されている項目を削除します。 /// </summary> /// /* ----------------------------------------------------------------- */ public void RemoveItems() => RemoveItems(SelectedIndices.Cast <int>());