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

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.代码实现

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

 1         private void OnTreeView1ItemDrag(object sender, ItemDragEventArgs e)
 2         {
 3             IDataObject data = new DataObject();
 4
 5             data.SetData("Test", e.Item);
 6
 7             //开始拖放操作
 8             this.DoDragDrop(data, DragDropEffects.Copy);
 9         }
10
11         private void OnPanel1DragEnter(object sender, DragEventArgs e)
12         {
13             if (e.Data.GetDataPresent("Test"))
14                 e.Effect = DragDropEffects.Copy;
15             else
16                 e.Effect = DragDropEffects.None;
17         }
18
19         private void OnPanel1DragDrop(object sender, DragEventArgs e)
20         {
21             object item = e.Data.GetData("Test");
22
23             TreeNode node = (TreeNode)item;
24             Label label = new Label();
25
26             this.panel1.Controls.Add(label);
27
28             label.AutoSize = true;
29             label.Location = new System.Drawing.Point(e.X - this.treeView1.Width - this.panel1.Location.X, e.Y - this.panel1.Location.Y);
30             label.Name = node.Name;
31             label.Size = new System.Drawing.Size(41, 12);
32             label.TabIndex = 0;
33             label.Text = node.Name;
34
35         }

4.程序运行效果

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

5.程序源代码

源代码工程文件下载

原文地址:https://www.cnblogs.com/JiYF/p/10067860.html

时间: 2024-10-14 06:57:35

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

拖拽图片到另一个div里

HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> #taa{width: 300px;height: 300px;background: #DEDEDE;} </style> </head> <body> <

可拖拽悬浮窗、对话框悬浮窗的简单实现

   本文讲解的是Android的悬浮窗机制,这个悬浮窗在很多第三方ROM会被屏蔽,像是小米,锤子上都无法显示.小米倒是可以通过开关开启,但在锤子上根本连开的机会都没有,真是无奈啊…… 虽然悬浮窗在实际中比较难以推广,但学习方面还是没问题的啦. 一.常规悬浮窗 思路: 1.建立一个服务,并且在里面生成一个WindowManager对象,通过它来加载一个视图作为悬浮窗. 2.设置WindowManager的参数Params 3.设置一个容器来找到悬浮窗的父控件,并绑定到windowManager中

一个能接受外部拖拽的控件(文字或文件)

恩....也是这2天写的一个小东西的需求, 可以拖拽外部文本文件, 或者选择的一段文本到Memo里显示 查了一下资料, 主要从2个方面实现: 1.拖拽文件实现WM_DROPFILES就可以了 2.拖拽文本需要实现IDropTarget接口 针对这个功能, 重新封装了一个Memo出来: TDropMemo = class(TMemo, IUnknown, IDropTarget) private FDropAccept: Boolean; FDTDropAccept: HResult; FFE:

Jquery实现可拖拽的树菜单

效果图如下所示:下载地址http://download.csdn.net/detail/javaquentin/8290417 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&g

HT for Web列表和3D拓扑组件的拖拽应用

很多可视化编辑器都或多或少有一些拖拽功能,比如从一个List列表中拖拽一个节点到拓扑组件上进行建模,并且在拖拽的过程中鼠标位置下会附带一个被拖拽节点的缩略图,那么今天我们就来实现这样的拖拽效果. 首先我们需要创建一个ListView列表,在列表中加入图片信息,让List列表不那么单调,先来看看效果图. 接下来我们一步一步来是想这个ListView列表,先来解决下数据,在这里我就列举一两个: var products = [ { ProductId : 1, ProductName : "Chai

第一百三十五节,JavaScript,封装库--拖拽

JavaScript,封装库--拖拽 封装库新增1个拖拽方法 /** tuo_zhuai()方法,将一个弹窗元素实现拖拽功能 * 注意:一般需要在css文件将元素里的某一个区块光标设置成提示可以拖拽,如:cursor: move; * 无参 **/ feng_zhuang_ku.prototype.tuo_zhuai = function () { if (this.jie_dian.length == 1) { var yan_su = null; for (var i = 0; i < th

Jquery easyui treegrid实现树形表格的行拖拽

前几天修改了系统的一个功能——实现树形列列表的行拖拽,以达到排序的目的.现在基本上功能实现,现做一个简单的总结. 1.拿到这个直接网上搜,有好多,但是看了后都觉得不是太复杂就是些不是特别想看的例子,自己太懒(对自己不是很熟悉的东西是不愿意第一去看的).结果选择良久,还是jquery easyui treegrid这个例子自己看起来比较熟悉.于是就专心研究了,从官方网站http://www.jeasyui.net/下载了demo,开始研读.先把jsp页面一些代码贴出 <link rel="s

duilib中控件拖拽功能的实现方法(附源码)

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41144283 duilib库中原本没有显示的对控件增加拖拽的功能,而实际使用过程中拖拽功能也是有用武之地的.看群里有人问题duilib怎么支持拖拽,我也就写这篇文章说明一下duilib实现控件拖拽的方法. 当我刚接触duilib不就的时候,考虑过duilib拖拽这个功能,当时的想法是,在xml布局中设置一个浮动的控件,正常状态下他是隐藏的,当出发了拖拽条件后将他显示并且

基于jtopo实现拖拽和连线

</pre>上代码:<p></p><p></p><p>jtopoDemo.html</p><p></p><pre name="code" class="html"><!DOCTYPE html> <html> <head> <title>拓扑</title> <meta name=&