/// <summary> /// 在完成拖放操作时发生,所有具体移动操作都发生在这里。 /// </summary> private void treeView_DragDrop(object sender, DragEventArgs e) { // Unlock updates DragHelper.ImageList_DragLeave(this.tempTreeView.Handle); // 取得目标节点 TreeNode nodeAt = this.tempTreeView.GetNodeAt(this.tempTreeView.PointToClient(new Point(e.X, e.Y))); // 如果拖拽的节点不等于目标节点,则增加拖拽的节点为目标节点的子节点。 if (this.dragNode != nodeAt) { //委托出去做持久化操作,如果持久化成功,才能移动,否则不移动。 if (this.ProcessDragNode != null && this.ProcessDragNode(this.dragNode, nodeAt)) { if (this.dragNode.Parent == null) { this.tempTreeView.Nodes.Remove(this.dragNode); } else { this.dragNode.Parent.Nodes.Remove(this.dragNode); } // 把拖拽的节点增加到目标节点上。 nodeAt.Nodes.Add(this.dragNode); nodeAt.ExpandAll(); this.dragNode = null; this.timer.Enabled = false; } else { MessageUtil.ShowTips("持久化失败,不能移动节点!"); } } }
/// <summary> /// 在将对象拖出控件的边界时发生。 /// </summary> private void treeView_DragLeave(object sender, EventArgs e) { DragHelper.ImageList_DragLeave(this.tempTreeView.Handle); this.timer.Enabled = false; }