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.程序源代码

源码下载地址

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值