当前位置: 移动技术网 > IT编程>开发语言>c# > C#实现TreeView节点拖拽的方法

C#实现TreeView节点拖拽的方法

2019年07月18日  | 移动技术网IT编程  | 我要评论

本文实例讲述了c#实现treeview节点拖拽的方法。分享给大家供大家参考。具体如下:

public form1()
{
 initializecomponent();
 treeview1.allowdrop = true;
 treeview1.itemdrag += new itemdrageventhandler(treeview1_itemdrag);
 treeview1.dragenter += new drageventhandler(treeview1_dragenter);
 treeview1.dragdrop += new drageventhandler(treeview1_dragdrop);
}
void treeview1_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.treeview1.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);
 }
 //更新当前拖动的节点选择
 treeview1.selectednode = newmovenode;
 //展开目标节点,便于显示拖放效果
 targenode.expand();
 //移除拖放的节点
 movenode.remove();
}
void treeview1_dragenter(object sender, drageventargs e)
{
 if (e.data.getdatapresent("system.windows.forms.treenode"))
 {
  e.effect = dragdropeffects.move;
 }
 else
 {
  e.effect = dragdropeffects.none;
 }
}
void treeview1_itemdrag(object sender, itemdrageventargs e)
{
 if (e.button == mousebuttons.left)
 {
  dodragdrop(e.item, dragdropeffects.move);
 }
}

希望本文所述对大家的c#程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网