一、说明

使用dev控件,TreeList1向TreeList2拖拽

二、属性

//允许拖拽
            treeList1.AllowDrop = true;
            treeList2.AllowDrop = true;
            //允许多行选择
            treeList1.OptionsSelection.MultiSelect = true;

三、代码

        #region tree拖拽操作

        TreeListHitInfo downHitInfo = null;
        #region 拖出
        private void treeList1_MouseMove(object sender, MouseEventArgs e)
        {
            TreeList treelist = sender as TreeList;
            if (e.Button == MouseButtons.Left && downHitInfo != null)
            {
                )
                    return;
                Size dragSize = SystemInformation.DragSize;
                Rectangle dragRect = ,
                    downHitInfo.MousePoint.Y - dragSize.Height / ), dragSize);

                if (!dragRect.Contains(new Point(e.X, e.Y)))
                {
                    List<TreeListNode> node = new List<TreeListNode>();
                    foreach (TreeListNode n in treeList1.Selection)
                    {
                        node.Add(n);
                    }
                    treelist.DoDragDrop(downHitInfo.Node, DragDropEffects.Move);
                    downHitInfo = null;
                    DevExpress.Utils.DXMouseEventArgs.GetMouseArgs(e).Handled = true;
                }
            }

        }

        private void treeList1_MouseDown(object sender, MouseEventArgs e)
        {
            TreeList treelist = sender as TreeList;
            downHitInfo = null;
            TreeListHitInfo hitInfo = treelist.CalcHitInfo(new Point(e.X, e.Y));

            if (Control.ModifierKeys != Keys.None) return;
            if (e.Button == MouseButtons.Left)
            {
                downHitInfo = hitInfo;
            }
        }

        #endregion

        #region 拖入
        private void treeList2_DragOver(object sender, DragEventArgs e)
        {
            TreeList treelist = sender as TreeList;
            if (treelist != null)
            {
                e.Effect = DragDropEffects.Move;
            }
        }

        private void treeList2_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }

        private void treeList2_DragDrop(object sender, DragEventArgs e)
        {
            List<TreeListNode> nodes = e.Data.GetData(typeof(List<TreeListNode>)) as List<TreeListNode>;
            TreeList grid = sender as TreeList;
            DataTable table = grid.DataSource as DataTable;

             && table != null)
            {
                foreach (TreeListNode node in nodes)
                {
                    treeList1.Nodes.Add(node);
                }
            }
        }
        #endregion
        #endregion

dev TreeList拖拽的更多相关文章

  1. Dev Grid拖拽移动行

    效果图 源码下载 拖拽时带行截图效果实现代码 /// <summary> /// 拖拽帮助类 /// </summary> public static class DragHe ...

  2. 浅谈DevExpress&lt;四&gt;:TreeList中的拖拽功能

    本篇要实现的目标,简单来说就是把一个treelist的节点用鼠标拖到另外的节点(自身或其他的listview)上,如下图: 1 

  3. Dev GridView行拖拽

    http://blog.csdn.net/keyrainie/article/details/8513802 http://www.cnblogs.com/qq4004229/archive/2012 ...

  4. dev GridControl实现拖拽

    一.示例说明 以gridControl1和gridControl2为例,从gridControl1拖拽行到gridControl2中去. 二.属性设置 gridControl2.AllowDrop = ...

  5. Html5+NodeJS——拖拽多个文件上传到服务器

    实现多文件拖拽上传的简易Node项目,可以在github上下载,你可以先下载下来:https://github.com/Johnharvy/upLoadFiles/. 解开下载下的zip格式包,建议用 ...

  6. React Editor 应用编辑器(1) - 拖拽功能剖析

    这是可视化编辑器 Gaea-Editor 的第一篇连载分析文章,希望我能在有限的篇幅讲清楚制作这个网页编辑器的动机,以及可能带来的美好使用前景(画大饼).它会具有如下几个特征: 运行在网页 文档流布局 ...

  7. 【百度地图API】如何制作可拖拽的沿道路测距

    原文:[百度地图API]如何制作可拖拽的沿道路测距 摘要: 地图测距,大家都会,不就map.getDistance麼.可是,这只能测任意两点的直线距离,用途不够实际啊.比如,我想测试北京天安门到北京后 ...

  8. VMware&#160;Linux下拖拽补丁vmtools的安装和卸载

    Linux下拖拽补丁vmtools的安装和卸载 by:授客 QQ:1033553122 Vmware 8.0.4为例子 步骤1.VM->Install Vmware Tools... 步骤2.查 ...

  9. jquery实现行列的单向固定和列的拖拽

    其实这些功能在PL/SQL Dev中都有实现,在页面中还是蛮常见的. 我实现列的单向固定的原理:将需要单向固定的列放在一个<table>标签中,而整体的数据放在另一个<table&g ...

随机推荐

  1. Windows 8.1 with Update MSDN 简体/英文/繁体

    PS:请不要使用离线下载,以免镜像损坏! 1.CN: 文件名:cn_windows_8.1_enterprise_with_update_x64_dvd_4048578.isoSHA1:2D9BFE9 ...

  2. FreeRTOS和Ucos在打开关闭中断的区别

  3. 【Linux命令与工具】系统资源查看——free、uname、dmesg以及netstat

    free:查看内存的使用情况 用法: free [-b|-k|-m|-g] [-t] 参数: -b: 直接输入free时,显示的单位是KB我们可以使用b(bytes), m(MB), k(KB), g ...

  4. javaweb---html标签

    img标签

  5. 使用Memcached提高.NET应用程序的性能

    在应用程序运行的过程中总会有一些经常需要访问并且变化不频繁的数据,如果每次获取这些数据都需要从数据库或者外部文件系统中去读取,性能肯定会受到影响,所以通常的做法就是将这部分数据缓存起来,只要数据没有发 ...

  6. Grid画边框

    public class GridHelper { //请注意:可以通过propa这个快捷方式生成下面三段代码 public static bool GetShowBorder(DependencyO ...

  7. 小王子浅读Effective javascript(一)了解javascript版本

    哈哈,各位园友新年快乐!愚安好久没在园子里写东西了,这次决定针对javascript做一个系列,叫做<小王子浅读Effective javascript>,主要是按照David Herma ...

  8. Android之ScaleGestureDetector(缩放手势检测)

    一.概述 ScaleGestureDetector这个类是专门用来检测两个手指在屏幕上做缩放的手势用的,最简单的应用就是用来缩放图片或者缩放网页. 二.要求 利用ScaleGestureDetecto ...

  9. ios面试题整理

    (1).weak 和assign的区别? assign: 用于非指针变量 (2).IOS开发之----#import.#include和@class的区别? 1. 如果不是c/c++,尽量用#impo ...

  10. IIS 配置问题解决

    无法识别的属性“targetFramework”.请注意属性名称区分大小写. 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错 ...