------a
|
------b 
|      
------c我用鼠标拖动a把它放到b后面 则它就形成如下
------b
|
------a
|
------c

解决方案 »

  1.   

    Win  OR  Web用的是什么树??
    MS的控件还是自己写的??
      

  2.   

    不太记得了。好像AllowDrop设置为true,然后写对应事件即可。
      

  3.   

    将.AllowDrop设置为true
    然后写 ItemDrag DragEnter 和 DragDrop事件
      

  4.   

    部分代码:        /// <summary>
            /// 拖动节点
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
            {
                if (e.Button == MouseButtons.Right) return;
                tnMove = e.Item as TreeNode;
                if (tnMove != null)
                {
                    DoDragDrop(tnMove, DragDropEffects.Move);
                }
            }        private void treeView1_DragEnter(object sender, DragEventArgs e)
            {
                e.Effect = DragDropEffects.Move;
            }        /// <summary>
            /// 释放拖动
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void treeView1_DragDrop(object sender, DragEventArgs e)
            {
                Point pt = new Point(e.X, e.Y);
                pt = treeCardsSort.PointToClient(pt);
                TreeNode ParentNode = treeCardsSort.GetNodeAt(pt);
                   // movieNode(tnMove, ParentNode);//移动节点
            }
      

  5.   

    How do I implement Drag and Drop support between two TreeViews?
    http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c91c.aspx#q617q对于同级的移动,相当于排序操作,需要通过父节点进行操作。那么操作分为两部分,
    首先,删除当前节点,用tnParent.Nodes.Remove删除,这里和一般的节点移动操作一样;第二步有别于节点拖动,需要用tnParent.Nodes.Insert完成,这里要获得需要插入节点的index值就行了。