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

 更新时间:2015年09月17日 14:45:51   作者:我心依旧  
这篇文章主要介绍了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#程序设计有所帮助。

相关文章

  • C#中ref关键字的用法

    C#中ref关键字的用法

    这篇文章介绍了C#中ref关键字的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C# WinForms中实现MD5的加密

    C# WinForms中实现MD5的加密

    MD5(消息摘要算法第5版)是一种广泛使用的哈希函数,可以生成一个128位(16字节)的哈希值,通常用于数据完整性校验和密码存储,在Windows Forms应用程序中实现MD5加密,可以用于用户密码的安全存储和数据的完整性验证,本文将详细介绍了如何在WinForms中实现MD5加密
    2024-10-10
  • C#实现简易画图板的示例代码

    C#实现简易画图板的示例代码

    这篇文章主要介绍了C#实现简易画图板的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • C#的WEBBROWSER与JS交互小结

    C#的WEBBROWSER与JS交互小结

    这篇文章主要介绍了C#的WEBBROWSER与JS交互方法,详细讲述了与页面标签的交互以及数据交互的方法,需要的朋友可以参考下
    2014-11-11
  • C#多线程系列之线程池

    C#多线程系列之线程池

    本文详细讲解了C#多线程中的线程池,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#自定义签名章实现方法

    C#自定义签名章实现方法

    这篇文章主要介绍了C#自定义签名章实现方法,涉及C#图形绘制的相关实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-08-08
  • UGUI绘制多点连续的平滑曲线

    UGUI绘制多点连续的平滑曲线

    这篇文章主要为大家详细介绍了UGUI绘制多点连续的平滑曲线,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • c#设计模式 适配器模式详细介绍

    c#设计模式 适配器模式详细介绍

    结构模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构。结构模式描述两种不同的东西:类与类的实例。根据这一点,结构模式可以分为类的结构模式和对象的结构模式
    2012-10-10
  • c# 应用NPOI获取Excel中的图片,保存至本地的算法

    c# 应用NPOI获取Excel中的图片,保存至本地的算法

    本文主要介绍了c# 应用NPOI获取Excel中的图片,保存至本地的算法。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • C#实现冒泡排序算法的代码示例

    C#实现冒泡排序算法的代码示例

    冒泡排序即是对数组每次轮循出最大数或最小数放在队尾,这里我们来看一下C#实现冒泡排序算法的代码示例,需要的朋友可以参考下
    2016-07-07

最新评论