zoukankan      html  css  js  c++  java
  • WinForm中TreeView控件实现鼠标拖动节点(可实现同级节点位置互换,或拖到目标子节点)

            private int draptype=1;//1:不同级,   不为1:拖同级
      private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    DoDragDrop(e.Item, DragDropEffects.Move);
                }
            }
    
            private void treeView1_DragEnter(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(typeof(TreeNode)))
                    e.Effect = DragDropEffects.Move;
                else
                    e.Effect = DragDropEffects.None;
            }
         
            private void treeView1_DragDrop(object sender, DragEventArgs e)
            {
                //获得拖放中的节点
                TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
                //根据鼠标坐标确定要移动到的目标节点
                Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
                TreeNode targetNode = treeView1.GetNodeAt(pt);
                //如果目标节点为分组则添加到下级节点的未端,如果目标节点为素材文件则添加为同级节点
                TreeNode NewMoveNode = (TreeNode)moveNode.Clone();
                if (draptype == 1)
                {
                    targetNode.Nodes.Insert(targetNode.Nodes.Count, NewMoveNode);
    
                }
                else
                {
                    if (moveNode.NextNode == targetNode)
                    {
                        targetNode.Parent.Nodes.Insert(targetNode.Index + 1, NewMoveNode);
                    }
                    else
                    {
                        targetNode.Parent.Nodes.Insert(targetNode.Index, NewMoveNode);
                    }
                }
                //更新当前拖动的节点选择
                treeView1.SelectedNode = NewMoveNode;
                //展开目标节点,便于显示拖放效果
                targetNode.Expand();
    
                //移除拖放的节点
                moveNode.Remove();
             
            }
  • 相关阅读:
    ps cs5 gif 动画 分解
    api 生成方法
    AVAYA 交换机
    jQuery操作input值
    CMM3 软件升级
    ehcache 使用 缓存:健值,页面,Hibernate,监控
    网络封包分析软件Wireshark
    Hacking Windows 7 SP 1 Using Java Signed Applet Social Engineering Code Execution
    以太网历史
    转:web应用开发的发展方向
  • 原文地址:https://www.cnblogs.com/happyqiang/p/6114808.html
Copyright © 2011-2022 走看看