winform 两个TreeView间拖拽节点
/// <summary>
/// 正在拖拽的节点
/// </summary>
private TreeNode DragNode = null;
/// <summary>
/// 节点来源
/// </summary>
private TreeView NodeSource = null;
/// <summary>
/// 树形节点移动方向
/// </summary>
private MoveTreeView MoveTo = MoveTreeView.NoMove; /// <summary>
/// 当鼠标拖拽某相进入控件区域内时
/// </summary>
private void TreeView_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
} /// <summary>
/// 当鼠标拖拽某节点时(两个控件的该事件都指向这个方法)
/// </summary>
private void TreeView_ItemDrag(object sender, ItemDragEventArgs e)
{
if (e.Item is TreeNode && e.Button == System.Windows.Forms.MouseButtons.Left &&
e.Item != null && sender is TreeView)
{
TreeView trv = sender as TreeView;
TreeNode node = e.Item as TreeNode;
if (node.Parent != null && trv.Tag != null)
{
int value = Convert.ToInt32(trv.Tag);
MoveTo = (MoveTreeView)value;
DragNode = node;
NodeSource = trv;
trv.DoDragDrop(node, DragDropEffects.Move);
}
}
} /// <summary>
/// 拖拽完成时发生的事件(两个控件的该事件都指向这个方法)
/// </summary>
private void TreeView_DragDrop(object sender, DragEventArgs e)
{
if (sender != null && sender is TreeView)
{
TreeView trv = sender as TreeView;
if (trv.Tag != null)
{
MoveTreeView move = (MoveTreeView)Convert.ToInt32(trv.Tag);
if (move == MoveTo) { DragNode = null; NodeSource = null; }
else
{
Point p = trv.PointToClient(new Point(e.X, e.Y));
TreeNode node = trv.GetNodeAt(p);
string path = GetClientPath(DragNode, DragNode.Text);
NodeSource.Nodes.Remove(DragNode);
node.Nodes.Add(DragNode);
}
}
}
} /// <summary>
/// 属性节点移动方向
/// </summary>
public enum MoveTreeView
{
/// <summary>
/// 未移动
/// </summary>
NoMove = -,
/// <summary>
/// 上传(客户端拖拽到服务器端)
/// </summary>
ClientToServer = ,
/// <summary>
/// 下载(服务器端拖拽到客户端)
/// </summary>
ServerToClient =
}
首先要将 TreeView 控件的 AllowDrop 属性置为 True
winform 两个TreeView间拖拽节点的更多相关文章
- C# TreeView 拖拽节点到另一个容器Panel中简单实现
C# TreeView 拖拽节点到另一个容器Panel中简单实现 用了这么久C#拖拽功能一直没有用到也就没用过,今天因为项目需要,领导特地给我简单讲解了下拖拽功能,真是的大师讲解一点通啊.特地写一篇博 ...
- winform上控件的拖拽小结
这里罗列出几个相关的事件和属性,具体的实现介绍已有非常优秀的文章了,文章末尾我将会给出,大家可以去参考. 属性: AllowDrop: 目标控件必须设定为true,才能接受拖拽来的东西. 事件: It ...
- WPF 实现控件间拖拽内容
想实现这样一个常用功能:在ListBox的一个Item上点住左键,然后拖拽到另外一个控件(如ListView中),松开左键,数据已经拖拽过来. 步骤如下: 1. 设置ListBox 的AllowDro ...
- winform中文本框添加拖拽功能
对一个文本框添加拖拽功能: private void txtFolder_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataP ...
- 让您的WinForm控件快速支持拖拽文件
实现原理:使用扩展方法. /// <summary> /// 控件扩展 /// </summary> public static class ControlExt { /// ...
- 重写TreeView,自定义图标,生成通行的下划线,取消默认获得焦点失去焦点的效果,并支持拖拽节点到外界
1.运行效果: 2.前端代码 <UserControl x:Class="iPIS.UI.Base.Tree.VideoTreeControl" xmlns="ht ...
- HT for Web列表和3D拓扑组件的拖拽应用
很多可视化编辑器都或多或少有一些拖拽功能,比如从一个List列表中拖拽一个节点到拓扑组件上进行建模,并且在拖拽的过程中鼠标位置下会附带一个被拖拽节点的缩略图,那么今天我们就来实现这样的拖拽效果. 首先 ...
- sortable.js 拖拽排序及配置项说明
// 拖动排序 $(function() { /*排序*/ //排序 // Simple list ]; new Sortable(list, { group: "name", a ...
- html5 Sortable.js 拖拽排序源码分析
最近公司项目经常用到一个拖拽 Sortable.js插件,所以有空的时候看了 Sortable.js 源码,总共1300多行这样,写的挺完美的. 本帖属于原创,转载请出名出处. 官网http:// ...
随机推荐
- iframe与include的区别
iframe与include区别和使用问题 1.iframe可以用在静态和动态页面,include只能用在动态页面. 2.iframe是视图级组合,include是代码级组合. 3.iframe独立成 ...
- cocos2dx3.1.1+cocosstudio+lua问题总结
一.DeprecatedEnum.lua no value _G.LAYOUT_ABSOLUTE = ccui.Type.ABSOLUTE _G.LAYOUT_LINE ...
- Could not find class '****', referenced from method #####
找不到类,多半也是和第三方的jar包有关. 将找不到的类.在下图中的地方勾选出来.假设jar太多.有的类有冲突的话,须要明白其先后顺序. 请外一篇和第三方jar有关的异常的文章. Conversion ...
- 基于x86架构的内核Demo的详细开发文档
http://hurlex.0xffffff.org/ 这里是hurlex这个基于x86架构的内核Demo的详细开发文档, 包含PDF文档和生成PDF的XeLaTex源码和文档每章节的阶段代码. 你可 ...
- Vivado学习笔记_002
经过几天的试用逐渐熟悉了vivado,和ISE相比vivado确实有了很多改良. 发现了以下几个特点: 1.数据格式统一了 在以往的设计中,保存数据的格式非常多.ISE有很多种格式的文件,在tra ...
- 关于使用json 字符串转换为字典问题
问题背景: '{"backend": "www.baidu.org", "record": {"server": &qu ...
- 图解JVM在内存中申请对象及垃圾回收流程
http://longdick.iteye.com/blog/468368 先看一下JVM的内存模型: 从大的方面来讲,JVM的内存模型分为两大块: 永久区内存( Permanent space )和 ...
- 20160329javaweb之JSP -session入门
3.Session Session 是一个域 !!作用范围:当前会话范围 !!生命周期: 当程序第一次调用到request.getSession()方法时说明客户端明确的需要用到session此时创建 ...
- ios Toll-Free Bridging
有一些数据类型是能够在 Core Foundation Framework 和 Foundation Framework 之间交换使用的.这意味着,对于同一个数据类型,你既可以将其作为参数传入 Cor ...
- java对图片的裁剪(包括来自网络的图片)
import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io. ...