private void NaviBoxEvent_DragOver(object sender, DragEventArgs e) { Point targetPoint = NaviBox.PointToClient(new Point(e.X, e.Y)); int targetIndex = NaviBox.InsertionMark.NearestIndex(targetPoint); if (targetIndex > -1) { Rectangle itemBounds = NaviBox.GetItemRect(targetIndex); if (targetPoint.X > itemBounds.Left + (itemBounds.Width / 2)) { NaviBox.InsertionMark.AppearsAfterItem = true; } else { NaviBox.InsertionMark.AppearsAfterItem = false; } } NaviBox.InsertionMark.Index = targetIndex; // setting target path to the location of the cursor Point cp = NaviBox.PointToClient(new Point(e.X, e.Y)); ListViewItem dragToItem = NaviBox.GetItemAt(cp.X, cp.Y); try { if (NavigatorBoxControl.IsItADirectory(NavigatorBoxControl.SelectionPath)) { DirectoryInfo srcDirInfo = new DirectoryInfo(NavigatorBoxControl.SelectionPath); DirectoryInfo tarDirInfo = new DirectoryInfo(dragToItem.ListView.Columns[0].Text); NavigatorBoxControl.CopyTarget = tarDirInfo.FullName + dragToItem.Text + @"\" + srcDirInfo.Name; } else { FileInfo srcFileInfo = new FileInfo(NavigatorBoxControl.SelectionPath); FileInfo tarFileInfo = new FileInfo(dragToItem.ListView.Columns[0].Text); NavigatorBoxControl.CopyTarget = tarFileInfo.FullName + dragToItem.Text + @"\" + srcFileInfo.Name; } } catch { } }