private void TreeView_DragOver(object sender, DragEventArgs e) { TreeView tree = (TreeView)sender; Point targetPoint = tree.PointToClient(new Point(e.X, e.Y)); TreeNode targetNode = tree.GetNodeAt(targetPoint); DragDropInformation info = (DragDropInformation)e.Data.GetData(typeof(DragDropInformation)); if (info == null) { return; } TreeViewDragDropHelper.ImageList_DragMove(targetPoint.X, targetPoint.Y); //TreeViewDragDropHelper.ImageList_DragMove(e.X, e.Y); TreeNode sourceNode = info.SourceNode; if (info.Client.IsDropAllowed(sourceNode, targetNode)) { TreeViewDragDropHelper.ImageList_DragShowNolock(false); tree.SelectedNode = targetNode; e.Effect = e.AllowedEffect; TreeViewDragDropHelper.ImageList_DragShowNolock(true); } else { TreeViewDragDropHelper.ImageList_DragShowNolock(false); tree.SelectedNode = sourceNode; e.Effect = DragDropEffects.None; TreeViewDragDropHelper.ImageList_DragShowNolock(true); } }
private void ScrollDown(Point pt) { TreeNode visibleNode = this.TreeView.GetNodeAt(pt); if (visibleNode == null) { return; } TreeNode showNode = visibleNode.NextVisibleNode; if (showNode == null) { showNode = visibleNode.NextNode; if (showNode == null) { showNode = visibleNode.Parent; if (showNode != null) { showNode = showNode.NextNode; } } } if (showNode != null) { TreeViewDragDropHelper.ImageList_DragShowNolock(false); showNode.EnsureVisible(); this.TreeView.Invalidate(); TreeViewDragDropHelper.ImageList_DragShowNolock(true); } }
private void TreeView_DragEnter(object sender, DragEventArgs e) { e.Effect = e.AllowedEffect; TreeView tree = (TreeView)sender; Point targetPoint = tree.PointToClient(new Point(e.X, e.Y)); TreeViewDragDropHelper.ImageList_DragEnter(((TreeView)sender).Handle, targetPoint.X, targetPoint.Y); //this.ScrollTimer.Enabled = true; }
public void DoDragDrop(IDragDropClient client, TreeNode node, DragDropEffects effects) { if (client == null) { throw new ArgumentNullException("client"); } if (node == null) { throw new ArgumentNullException("node"); } using (ImageList imgList = this.CreateImageList(node)) { TreeViewDragDropHelper.ImageList_BeginDrag(imgList.Handle, 0, 0, 0); try { node.TreeView.DragDrop += new DragEventHandler(this.TreeView_DragDrop); node.TreeView.DragEnter += new DragEventHandler(this.TreeView_DragEnter); node.TreeView.DragLeave += new EventHandler(this.TreeView_DragLeave); node.TreeView.DragOver += new DragEventHandler(this.TreeView_DragOver); try { using (new ScrollHelper(node.TreeView)) node.TreeView.DoDragDrop(new DragDropInformation(node, client), effects); } finally { TreeView tree = node.TreeView; if (tree != null) { tree.DragDrop -= new DragEventHandler(this.TreeView_DragDrop); tree.DragEnter -= new DragEventHandler(this.TreeView_DragEnter); tree.DragLeave -= new EventHandler(this.TreeView_DragLeave); tree.DragOver -= new DragEventHandler(this.TreeView_DragOver); } } } finally { TreeViewDragDropHelper.ImageList_EndDrag(); } } }
private void TreeView_DragLeave(object sender, EventArgs e) { //this.ScrollTimer.Enabled = false; TreeViewDragDropHelper.ImageList_DragLeave(((TreeView)sender).Handle); }