C# TreeView 拖拽节点到另一个容器Panel中简单实现

用了这么久C#拖拽功能一直没有用到也就没用过,今天因为项目需要,领导特地给我简单讲解了下拖拽功能,真是的大师讲解一点通啊。特地写一篇博客记录下,分享给大家!也方便以后自己查看。

1.拖拽功能分析

拖拽功能分析其实就三个字:选-->拖-->放  什么意思,请看下图

本图大概就是将左侧TreeView中的节点拖拽到右侧的Panel控件中,然后根据业务处理想要的效果

拖拽过程分为三步:

  1. 将左侧的TreeView的节点选中
  2. 拖拽选中的节点
  3. 放入右侧panel容器中

2.拖拽用到的事件以及属性

对于TreeView控件需要监听:

  1. ItemDrag 事件(当用户开始拖动节点时发生)。

对于Panel控件:

  1. 开启Panel的AlowDrop属性设置为true  表示允许进行拖入操作
  2. DragEnter事件  在将对象拖入控件的边界时发生。

  3. DragDrop事件 在完成拖放操作时发生。

3.代码实现

这里拖入完成后的位置随便写的,自己研究吧!

         private void OnTreeView1ItemDrag(object sender, ItemDragEventArgs e)
{
IDataObject data = new DataObject(); data.SetData("Test", e.Item); //开始拖放操作
this.DoDragDrop(data, DragDropEffects.Copy);
} private void OnPanel1DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("Test"))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
} private void OnPanel1DragDrop(object sender, DragEventArgs e)
{
object item = e.Data.GetData("Test"); TreeNode node = (TreeNode)item;
Label label = new Label(); this.panel1.Controls.Add(label); label.AutoSize = true;
label.Location = new System.Drawing.Point(e.X - this.treeView1.Width - this.panel1.Location.X, e.Y - this.panel1.Location.Y);
label.Name = node.Name;
label.Size = new System.Drawing.Size(, );
label.TabIndex = ;
label.Text = node.Name; }

4.程序运行效果

实际上VS本身的工具箱应该都很熟悉,平时拖拽一个按钮控件等,就是这个拖拽

5.程序源代码

源代码工程文件下载

C# TreeView 拖拽节点到另一个容器Panel中简单实现的更多相关文章

  1. TREEVIEW拖拽对应修改目录

    附件:http://files.cnblogs.com/xe2011/TreeView_Drag_Directory%E6%93%8D%E4%BD%9C.rar     TREEVIEW拖拽对应修改目 ...

  2. winform 两个TreeView间拖拽节点

    /// <summary> /// 正在拖拽的节点 /// </summary> private TreeNode DragNode = null; /// <summa ...

  3. 拖拽图片到另一个div里

    HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  4. Duilib的控件拖拽排序,支持跨容器拖拽(网易云信版本)

    完整代码见:https://github.com/netease-im/NIM_Duilib_Framework/pull/151 核心代码(思路): appitem.h #pragma once # ...

  5. 【拖拽可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!

    "整篇文章较长,干货很多!建议收藏后,分章节阅读." 一.设计方案 整体设计方案思维导图: 整篇文章,也将按照这个结构来讲解. 若有重点关注部分,可点击章节目录直接跳转! 二.项目 ...

  6. 重写TreeView,自定义图标,生成通行的下划线,取消默认获得焦点失去焦点的效果,并支持拖拽节点到外界

    1.运行效果: 2.前端代码 <UserControl x:Class="iPIS.UI.Base.Tree.VideoTreeControl" xmlns="ht ...

  7. Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...

  8. TreeView 拖拽 增删改

    using Endv.Tools; using System; using System.Data; using System.Drawing; using System.IO; using Syst ...

  9. Jquery实现可拖拽的树菜单

    效果图例如以下所看到的:下载地址http://download.csdn.net/detail/javaquentin/8290417 <html xmlns="http://www. ...

随机推荐

  1. websocket 的客户端 websocket-sharp

    事实上, websocket-sharp 也包括服务端的实现,  还有  HTTP Authentication 的功能 http://sta.github.io/websocket-sharp/ h ...

  2. oracle 解决锁表问题

      --首先查看有哪些锁 select /*+ rule */ s.username,       decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',nu ...

  3. 小甲鱼Python第十三讲课后题--014字符串

     字符串的方法及注释 capitalize()     把字符串的第一个字符改为大写     casefold()     把整个字符串的所有字符改为小写     center(width)      ...

  4. JS_高程1.javascript简介

    1.javaScript诞生于1995年,最开始是为了处理以前由服务器端语言负责的一些诸如验证的操作. 2.一些名词: ECMA:European Computer Manufacturers Ass ...

  5. TDG今日成立!

    大家好我们是来自土1603-3的佟天宇.杨子浩.吴强.周泊辰(从左到右) 我们的团队名称是  TDG队 我们的口号是:“Legends Never Die!” 队员简介: 佟天宇 个性:儒雅随和 特长 ...

  6. Unity设置播放模式下始终先执行指定的场景

    通过我们使用Unity开发游戏,是在PC/Mac上.而一个游戏通常也会有很多的场景,比如A.B.C.D三个场景,正常流程下的执行顺序是 A –> B –> C –> D.在具体一点, ...

  7. [web 前端] css3 transform方法常用属性

    cp from : https://www.cnblogs.com/chrxc/p/5126569.html css3中transform方法是一个功能强大的属性,可以对元素进行移动.缩放.转动.拉长 ...

  8. SpringCloud无废话入门02:Ribbon负载均衡

    1.白话负载均衡 在上一篇的介绍中,我们创建了两个一模一样的服务提供者:Provider1和Provider2,然后它们提供的服务也一模一样,都叫Hello-Service.为什么一样的服务我们要部署 ...

  9. Scala详解

    1       快速入门... 4 1.1             分号... 4 1.2             常变量声明... 4 1.2.1         val常量... 4 1.2.2  ...

  10. 【Tomcat】Tomcat报错追踪

    应用部署上之后无法正常启动.tomcat启动日志例如以下: 信息: Starting service Catalina 2015-7-22 18:39:31 org.apache.catalina.c ...