private void timer_Tick(object sender, EventArgs e) { Point pt = PointToClient(Control.MousePosition); TreeNode node = GetNodeAt(pt); if (node == null) { return; } if (pt.Y < 30) { if (node.PrevVisibleNode != null) { node = node.PrevVisibleNode; DragHelper.ImageList_DragShowNolock(false); node.EnsureVisible(); Refresh(); DragHelper.ImageList_DragShowNolock(true); } } else if (pt.Y > Size.Height - 30) { if (node.NextVisibleNode != null) { node = node.NextVisibleNode; DragHelper.ImageList_DragShowNolock(false); node.EnsureVisible(); Refresh(); DragHelper.ImageList_DragShowNolock(true); } } }
private void treeView1_DragOver(object sender, DragEventArgs e) { Array a = (Array)e.Data.GetData(DataFormats.FileDrop); Point formP = PointToClient(new Point(e.X, e.Y)); DragHelper.ImageList_DragMove(formP.X - Left, formP.Y - Top); TreeNode dropNode = GetNodeAt(PointToClient(new Point(e.X, e.Y))); if (dropNode == null && a == null) { e.Effect = DragDropEffects.None; return; } e.Effect = DragDropEffects.Move; if (_tempDropNode != dropNode) { DragHelper.ImageList_DragShowNolock(false); SelectedNode = dropNode; DragHelper.ImageList_DragShowNolock(true); _tempDropNode = dropNode; } TreeNode tmpNode = dropNode; if (tmpNode != null) { while (tmpNode.Parent != null) { if (tmpNode.Parent == _dragNode) { e.Effect = DragDropEffects.None; } tmpNode = tmpNode.Parent; } } }