博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WinForm中TreeView控件实现鼠标拖动节点(可实现同级节点位置互换,或拖到目标子节点)...
阅读量:4460 次
发布时间:2019-06-08

本文共 1735 字,大约阅读时间需要 5 分钟。

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();                 }

 

转载于:https://www.cnblogs.com/happyqiang/p/6114808.html

你可能感兴趣的文章
hihocoder编程练习赛52-3 部门聚会
查看>>
Start to study Introduction to Algorithms
查看>>
AE常见接口之间的关系(较笼统)+arcgis常见概念
查看>>
正则表达式
查看>>
三元操作设计不同类型的时候,最终结果的问题
查看>>
POJ 1661 Help Jimmy LIS DP
查看>>
大数据时代,我诚惶诚恐的拥抱
查看>>
c++小游戏——五子棋
查看>>
浏览器全屏非全屏切换
查看>>
2.CSS 颜色代码大全
查看>>
Native与H5交互的一些解决方法
查看>>
三、基于hadoop的nginx访问日志分析--计算时刻pv
查看>>
SpringCloud Config客户端
查看>>
OAuth 开放授权 Open Authorization
查看>>
MongoDb数据库设计
查看>>
矩阵的线性代数意义
查看>>
最大似然估计(Maximum likelihood estimation)(通过例子理解)
查看>>
设计模式的六大原则
查看>>
/var/spool/postfix/maildrop 占用inode索引及磁盘空间解决办法
查看>>
urlRewrite url重写
查看>>