zoukankan      html  css  js  c++  java
  • .net C# Treeview的Node拖动,Node节点上下移动

    定义一个TreeView 名字为TVdepartment,设置allowdrop为True

    //移动代码                                                                           
                                                                                         
    private void MiMoveUp_Click(object sender, EventArgs e) //向上移动                   
    {                                                                                      
        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)//向下移动                  
    {                                                                                                    
        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)//拖动             
    {                                                                                                 
        //获得拖放中的节点                                                               
        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();                                                                                                                                                                    
    }                                                                                    

    作者:chlyzone
    出处:http://www.cnblogs.com/chlyzone/
    欢迎转载,请在文章页面明显位置给出原文连接。
  • 相关阅读:
    结对编程项目作业4
    团队编程项目进度
    团队编程项目作业2-团队编程项目代码设计规范
    现代软件工程 阅读笔记
    个人编程作业1-GIT应用
    结对编程项目作业2-开发环境搭建过程
    结对编程项目作业2-结对编项目设计文档
    课后作业-阅读任务-阅读提问
    《团队-科学计算器-模块测试过程》
    团队-科学计算器-模块开发过程
  • 原文地址:https://www.cnblogs.com/chlyzone/p/2025072.html
Copyright © 2011-2022 走看看