Пример #1
0
        /// <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("持久化失败,不能移动节点!");
                }
            }
        }
Пример #2
0
 /// <summary>
 /// 在将对象拖出控件的边界时发生。
 /// </summary>
 private void treeView_DragLeave(object sender, EventArgs e)
 {
     DragHelper.ImageList_DragLeave(this.tempTreeView.Handle);
     this.timer.Enabled = false;
 }