C#中,TreeView 拖拽时,获取被拖拽的节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中,TreeView 拖拽时,获取被拖拽的节点相关的知识,希望对你有一定的参考价值。
在ItemDrag事件中
请问如何获取到被拖拽的节点啊?
treeView1.SelectedNode 这个属性 在我先选取一个节点后,直接拖拽另外个节点时,SelectedNode 属性还是是之前选取的节点。
具体点就是,鼠标点击了节点A,然后鼠标点击B不放,直接拖拽B,SelectedNode 属性还是是节点A
private void treeView1_DragDrop(object sender, DragEventArgs e)
try
TreeNode myNode = null;
if (e.Data.GetDataPresent(typeof(TreeNode)))
myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
else
MessageBox.Show("error");
Position.X = e.X;
Position.Y = e.Y;
Position = treeView1.PointToClient(Position);
TreeNode DropNode = this.treeView1.GetNodeAt(Position);
// 1.目标节点不是空。2.目标节点不是被拖拽接点的字节点。3.目标节点不是被拖拽节点本身
if (DropNode != null && DropNode.Parent != myNode && DropNode != myNode)
TreeNode DragNode = myNode;
// 将被拖拽节点从原来位置删除。
myNode.Remove();
// 在目标节点下增加被拖拽节点
DropNode.Nodes.Add(DragNode);
// 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下
if (DropNode == null)
TreeNode DragNode = myNode;
myNode.Remove();
treeView1.Nodes.Add(DragNode);
catch (Exception ex)
MessageBox.Show(ex.Message);
private void treeView1_DragEnter(object sender, DragEventArgs e)
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode"))
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
if (e.Button == MouseButtons.Left)
DoDragDrop(e.Item, DragDropEffects.Move);
private void treeView1_DragOver(object sender, DragEventArgs e)
treeView1.ExpandAll();
参考技术B 不放怎么点击节点B 呢?
有个鼠标释放一个事件· 点击获得新的节点位置 然后查询新的节点信息 参考技术C 点击B要放啊,你放了才算点了一下,你不放就不算点击了节点B
unity UGUI怎么让 被拖拽的UI最后渲染
参考技术A transform.SetAsLastSibling();或者使用transform.SetSiblingIndex(int);手动指定层级
--------------
剩下一个transform.SetAsFirstSibling();是放到最底层,注意这3个方法都是只影响local transform list 参考技术B unity官方ui有相关的例子,这里不让发链接,你自己找找
以上是关于C#中,TreeView 拖拽时,获取被拖拽的节点的主要内容,如果未能解决你的问题,请参考以下文章