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

首页 > 软件编程 > C#教程 更新日期: 2015-10-09
这篇文章主要介绍了C#实现TreeView节点拖拽的方法,涉及C#针对TreeView节点的动态添加及移除技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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#程序设计有所帮助。


> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
    jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
    这篇文章主要介绍了jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法,实例分析了jquery.nicescroll插件实现图片拖拽效果的方法,需要的朋友可以参考下本文实例讲述了jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法.分享给大家供大家参考.具体如下: 这里介绍jQuery图片左右拖拽特效, ...
  • Jquery拖拽并简单保存的实现代码
    今闲着无聊 顺便看了下jquery ui的拖拽插件,实现拖拽的方法很简单,看到效果后兴奋小下...但是如何保存顺序呢,想到了cookie,但是用如何用cookie保存顺序呢,直接保存html代码下次读取覆盖可以,但是总感觉内容多的话 保存的东西比较多,后用ui插件获取id保存id在读取实现了顺序的保存,废话不多说..直接看代码... 代码如下:<!DO ...
  • JavaScript实现拖拽网页内元素的方法
    这篇文章主要介绍了JavaScript实现拖拽网页内元素的方法,以注释形式较为详细的分析了javascript事件监听.元素定位的相关技巧,并配有详细的注释以便于理解,需要的朋友可以参考下本文实例讲述了JavaScript实现拖拽网页内元素的方法.分享给大家供大家参考.具体如下: 这段代码详细讲述了JS拖拽的原理和方法,值得学习和借鉴. /** * 跨平台的 ...
  • jsMind通过鼠标拖拽的方式调整节点位置
    这篇文章主要介绍了jsMind通过鼠标拖拽的方式调整节点位置的方法,十分的简单实用,推荐给有需要的小伙伴参考下.jsMind是一个纯javascript实现的思维导图类库,基于html5的canvas实现,以BSD协议开源. 提供了思维导图的显示,编辑等功能,支持freemind数据格式,有丰富的开发接口可供使用,具体功能请访问软件主页进一步了解. jsMi ...
  • javascript拖拽上传类库DropzoneJS使用方法
    这篇文章主要介绍了javascript拖拽上传类库DropzoneJS使用方法,大家参考使用吧用法 1. add js and css style <link href="~/Dropzone/css/dropzone.css" /> <script src="~/Dropzone/dropzone.min.j ...
猜你喜欢