C#实现树型结构TreeView节点拖拽的简单功能(转)

摘要:
本文摘抄博客园里面的牛人吉日嘎啦。为了让TreeView支持拖拽功能,需要注意以下几个属性设置及相应的事件代码。

本文摘抄博客园里面的牛人吉日嘎啦http://www.cnblogs.com/jirigala

 例子程序运行效果如何下:

C#实现树型结构TreeView节点拖拽的简单功能(转)第1张  


当然在节点拖拽时,需要注意几个事情:


1:拖拽时总需要有提示信息比较好,防止误操作后找不到被托摘到哪里去了。


2:父亲节点总不能拖拽到自己的子节点上,那不是死循环或者乱了辈份了不是?


为了让TreeView支持拖拽功能,需要注意以下几个属性设置及相应的事件代码。


C#实现树型结构TreeView节点拖拽的简单功能(转)第2张

C#实现树型结构TreeView节点拖拽的简单功能(转)第3张


代码实现参考如下:

privatevoidtvOrganize_ItemDrag(objectsender,ItemDragEventArgse)
{
if(this.permissionEdit)
{
//开始进行拖放操作,并将拖放的效果设置成移动。this.DoDragDrop(e.Item,DragDropEffects.Move);
}
}
privatevoidtvOrganize_DragEnter(objectsender,DragEventArgse)
{
//拖动效果设成移动e.Effect=DragDropEffects.Move;
}
privatevoidtvOrganize_DragDrop(objectsender,DragEventArgse)
{
//定义一个中间变量TreeNodetreeNode;
//判断拖动的是否为TreeNode类型,不是的话不予处理if(e.Data.GetDataPresent("System.Windows.Forms.TreeNode",false))
{
//拖放的目标节点TreeNodetargetTreeNode;
//获取当前光标所处的坐标
//定义一个位置点的变量,保存当前光标所处的坐标点Pointpoint=((TreeView)sender).PointToClient(newPoint(e.X,e.Y));
//根据坐标点取得处于坐标点位置的节点targetTreeNode=((TreeView)sender).GetNodeAt(point);
//获取被拖动的节点treeNode=(TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
//判断拖动的节点与目标节点是否是同一个,同一个不予处理if(BaseInterfaceLogic.TreeNodeCanMoveTo(treeNode,targetTreeNode))
{
if(BaseSystemInfo.ShowInformation)
{
//是否移动部门if(MessageBox.Show(AppMessage.Format(AppMessage.MSG0038,treeNode.Text,targetTreeNode.Text),AppMessage.MSG0000,MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.No)
{
return;
}
}
ServiceManager.Instance.OrganizeService.MoveTo(UserInfo,treeNode.Tag.ToString(),targetTreeNode.Tag.ToString());
//往目标节点中加入被拖动节点的一份克隆targetTreeNode.Nodes.Add((TreeNode)treeNode.Clone());
//将被拖动的节点移除treeNode.Remove();
}
}
}

免责声明:文章转载自《C#实现树型结构TreeView节点拖拽的简单功能(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java代码格式化规范实践总结C# 自定义控件制作和使用实例(winform)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF中TreeView的展开 (转)

http://blog.163.com/qiulei_21/blog/static/35071722201122452818390/ 在网上找了很多资料,但是都是云山雾绕的,看了很久看不懂,今天终于在我同事的帮助下搞定了,要充分利用TreeViewItem的IsExpanded属性啊。 任务:树节点的展开,包括全展开,点击节点的展开,某一层节点的展开。...

WPF中TreeView控件的使用案例

WPF总体来说还是比较方便的,其中变化最大的主要是Listview和Treeview控件,而且TreeView似乎在WPF是一个备受指责的控件,很多人说他不好用。我这个demo主要是在wpf中使用TreeView控件实现图片查看功能,简单的Grid布局、TreeView控件添加图标、TreeView控件的一些事件、显示统计、还有就是读取文件操作。 效果图:...

C# TreeView树节点上下移动

///<summary> ///上移 ///</summary> ///<paramname="sender"></param> ///<paramname="e"></param> privatevoidtsbMoveUp_Click(objectsender,EventArgse...

C# 里TreeView绑定数据库实现分类

view plaincopy to clipboardprint? //从数据库中读取数据 SqlConnectioncon=newSqlConnection("server=127.0.0.1\\sqlexpress;uid=sa;"); con.Open(); con.ChangeDatabase("STggggg");...

C# 中采用treeview递归生成目录树(Winform和Webform两种)

部门表: 课程表: 查询结果结构: 数据结构分析,部门分为部门id和部门名称;课程分为课程id,课程名称,课程路径和课程所属部门。 要求以部门为父节点展示不同部门下的课程。 Winform采用treeview递归生成目录树using System;using System.Collections.Generic;using System.Comp...

微软Blazor组件发布,DevExpress v19.1.8中可用:Charts新功能

点击获取DevExpress v19.2.3最新完整版试用下载 DevExpress UI for Blazor在v19.1.8中可用,此次更新发布包括DevExpress Blazor组件的主要功能增强:新的数据网格、图表、TreeView和Tabs。本文将先为大家介绍事件源检测、图表、标签等功能,迎下载最新版试用体验>> TreeView...