Treeview的Node拖动,Node节点上下移动

转载 2007年10月11日 08:58:00
定义一个TreeView 名字为TVdepartment,设置allowdrop为True
//移动代码

        
private void MiMoveUp_Click(object sender, EventArgs e) //向上移动
        ...{
            
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.10
            TreeNode Node = TVdepartment.SelectedNode;
            TreeNode PrevNode 
= Node.PrevNode;
            
if (PrevNode != null)
            
...{

                TreeNode NewNode 
= (TreeNode)Node.Clone();
                
if (Node.Parent == null)
                
...{
                    TVdepartment.Nodes.Insert(PrevNode.Index, NewNode);
                }

                
else
                
...{
                    Node.Parent.Nodes.Insert(PrevNode.Index, NewNode);
                }

                Node.Remove();
                TVdepartment.SelectedNode 
= NewNode;


            }



        }

        
private void MiMoveDown_Click(object sender, EventArgs e)//向下移动
        ...{
            
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.10
            TreeNode Node = TVdepartment.SelectedNode;
            TreeNode NextNode 
= Node.NextNode;
            
if (NextNode != null)
            
...{

                TreeNode NewNode 
= (TreeNode)Node.Clone();
                
if (Node.Parent == null)
                
...{
                    TVdepartment.Nodes.Insert(NextNode.Index 
+ 1, NewNode);
                }

                
else
                
...{
                    Node.Parent.Nodes.Insert(NextNode.Index 
+ 1, NewNode);
                }

                Node.Remove();
                TVdepartment.SelectedNode 
= NewNode;


            }

        }

        
//拖动代码
        private void TVdepartment_ItemDrag(object sender, ItemDragEventArgs e)//左键拖动
        ...{
            
if (e.Button == MouseButtons.Left)
            
...{
                DoDragDrop(e.Item, DragDropEffects.Move);
            }


        }


        
private void TVdepartment_DragEnter(object sender, DragEventArgs e)
        
...{
            
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode"))
            
...{
                e.Effect 
= DragDropEffects.Move;
            }

            
else
            
...{
                e.Effect 
= DragDropEffects.None;
            }


        }


        
private void TVdepartment_DragDrop(object sender, DragEventArgs e)//拖动
        ...{
            
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.10
            
//获得拖放中的节点
            TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");

            
//根据鼠标坐标确定要移动到的目标节点
            Point pt;
            TreeNode targeNode;
            pt 
= ((TreeView)(sender)).PointToClient(new Point(e.X, e.Y));
            targeNode 
= this.TVdepartment.GetNodeAt(pt);

            
//如果目标节点无子节点则添加为同级节点,反之添加到下级节点的未端
            TreeNode NewMoveNode = (TreeNode)moveNode.Clone();
            
if (targeNode.Nodes.Count == 0)
            
...{
                targeNode.Parent.Nodes.Insert(targeNode.Index, NewMoveNode);
            }

            
else
            
...{
                targeNode.Nodes.Insert(targeNode.Nodes.Count, NewMoveNode);
            }

            
//更新当前拖动的节点选择
            TVdepartment.SelectedNode = NewMoveNode;
            
//展开目标节点,便于显示拖放效果
            targeNode.Expand();

            
//移除拖放的节点
            moveNode.Remove();


        }

 

treeview节点拖动

网上找的有一个BUG,就是父节点为空时会出错,已经修正 把treeview改名为tvList,并把AllowDrop设置为True,然后添加以下代码: private void tvList_Drag...
  • rztyfx
  • rztyfx
  • 2015年06月21日 22:11
  • 1111

reeview的Node拖动,Node节点上下移动

http://blog.csdn.net/confei/article/details/3081464 定义一个TreeView 名字为TVdepartment,设置allowdrop为True //...
  • u013908405
  • u013908405
  • 2017年02月09日 14:28
  • 162

C# TreeView的使用以及节点的拖动

在项目中需要使用TreeView,TreeView中的节点是需要监控的视频站点,当拖动TreeView中的节点到Winform中的显示窗口时,可以实现该节点对应的站点的监控,摄像机转动等功能。 在实...
  • u011974126
  • u011974126
  • 2015年07月23日 11:03
  • 2064

原生JS--解读Node(节点)

写在前面本来开开心心的看着ityped.js的源码,才看到几十行就发现怎么有两个方法没见过。然后翻看了一下MDN,发现自己的知识库要更新了。通过翻阅MDN和Stack Overflow,总结一些原生D...
  • dai_qingyun
  • dai_qingyun
  • 2017年01月18日 18:30
  • 1792

WAS中单元(Cell)节点(Node),以及Node、Profile 与 Server 之间的关系是什么

WAS中单元(Cell)节点(Node),以及Node、Profile 与 Server 之间的关系是什么 单元: 单元是整个分布式网络中一个或多个节点的逻辑分组。单元是一个配置概...
  • lyfxjt
  • lyfxjt
  • 2015年05月28日 22:59
  • 1611

JavaScript HTML DOM节点类型之Node类型介绍

JavaScript中所有HTML DOM节点类型都继承自Node类型,因此所有类型的节点都有一些相同的属性和方法。Node接口是DOM1级中定义的一个接口,在JavaScript中Node接口被实现...
  • bfboys
  • bfboys
  • 2017年01月11日 22:32
  • 1209

JS 之Node节点的 属性、方法 &获取

JS Node节点的常见属性和方法使用 & 如何获取相应节点和值 一、节点的常用属性和方法 (一)通过具体的元素节点调用如下方法和属性 《1》getElementsByTagName() 方法,...
  • lxf512666
  • lxf512666
  • 2016年10月22日 00:38
  • 4457

HTML中的Node和Element的区别

元素(Element)和结点(Node)的区别,元素是一个小范围的定义,必须是含有完整信息的结点才是一个元素,例如…。但是一个结点不一定是一个元素,而一个元素一定是一个结点。 什么是node...
  • fivedoumi
  • fivedoumi
  • 2016年03月12日 17:22
  • 3497

[笔记] Node-Link可视化图中移动Node后自动布局调整算法

Node-Link可视化图中移动Node后自动布局调整算法如果按工程来说,HyperGraph的可视化,用Node-Link可以说已经比成熟了,不论是D3.js还是各种其他JavaScript库诸如s...
  • prog_6103
  • prog_6103
  • 2016年05月03日 13:33
  • 7305

(三)理解ROS Nodes(节点)

1.首先安装一款仿真器 $ sudo apt-get install ros--ros-tutorials 用自己当前安装的ros版本替换,如hydro、groovy、electric、fuerte、...
  • fengmengdan
  • fengmengdan
  • 2015年01月04日 11:49
  • 1742
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Treeview的Node拖动,Node节点上下移动
举报原因:
原因补充:

(最多只允许输入30个字)