C#之四十一 在Winform中从外部拖动节点到树形结构

转载 2016年06月01日 20:32:29
在进行拖放操作之前,必须要对进行拖放操作的组件的"AllowDrop"属性值设定为"True",因为此属性是确定组件是否可以进行拖放操作的。  
     我们会用到三种事件:"ItemDrag"、"DragEnter"、"DragDrop"。其中只有第一种事件是在源组件中触发的,另外二种事件是在目标组件中触发的。其中当用户拖动组件触发"ItemDrag"事件;当拖动数据进入目标组件区域触发"DragEnter"事件;当用户在目标组件区域放置拖动的数据触发"DragDrop"事件。
     实现代码如下:
private void listView1_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
 2         {
 3             this.DoDragDrop(e.Item,DragDropEffects.Move);
 4         }
 5 
 6         private void listView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
 7         {
 8             e.Effect=DragDropEffects.Move;
 9         }
10 
11         private void treeView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
12         {
13             //判定是否现在拖动的数据是LISTVIEW项
14             ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); 
15             if (lvi != null) 
16             { 
17                 e.Effect = DragDropEffects.Move; 
18             } 
19             else 
20                 Cursor = Cursors.No; 
21 
22         }
23         private void treeView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
24         {
25             //获得拖放中的项
26             ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); 
27 
28             //根据鼠标坐标确定要移动到的目标节点
29             Point pt;
30             TreeNode targeNode;
31             pt = ((TreeView)(sender)).PointToClient(new Point(e.X, e.Y));
32             targeNode = this.treeView1.GetNodeAt(pt);
33             TreeNode NewMoveNode  =new TreeNode(lvi.Text);
34             if(targeNode!=null)//如果目标节点未选中,则添加到一级节点
35             {
36                 targeNode.Nodes.Add(NewMoveNode);
37                 //更新当前拖动的节点选择
38                 treeView1.SelectedNode = NewMoveNode;
39                 //展开目标节点,便于显示拖放效果
40                 targeNode.Expand();
41                 treeView1.Refresh();
42             }
43             else
44             {
45                 this.treeView1.Nodes.Add(NewMoveNode);
46                 //更新当前拖动的节点选择
47                 treeView1.SelectedNode = NewMoveNode;
48                 //展开目标节点,便于显示拖放效果
49                 treeView1.ExpandAll();
50                 treeView1.Refresh();
51             }
52 
53             
54         }

C# TreeView的使用以及节点的拖动

在项目中需要使用TreeView,TreeView中的节点是需要监控的视频站点,当拖动TreeView中的节点到Winform中的显示窗口时,可以实现该节点对应的站点的监控,摄像机转动等功能。 在实...

listview实现的tree树结构

使用listView实现的树状结构: 转载:http://www.eoeandroid.com/thread-309141-1-1.html+调整 源码下载:http://download.csd...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

树形ListView

第一次接触树形ListView是一年前,当时公司做的项目是一个企业的员工管理软件,在展示员工时用到的,我花了大半天时间,才把树形ListView搞明白,完成任务后就没有然后了(当时主管还对我说要注意代...

C# 系统应用之TreeView控件显示树状磁盘文件目录及加载图标

在C#系统应用毕设U盘防御软件中需要实现文件不可恢复的删除,首先需要实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录并加载相应图标.显示结果如下图所示: 一...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

c# winform TreeView控件中实现拖拽的功能

    曾经做过一个Windows Form,需要在TreeView空间中实现拖拽的功能,首先我想介绍一下Windows Form中的TreeView控件:使用 Windows 窗体 TreeView...
  • mzoy
  • mzoy
  • 2007年08月27日 10:50
  • 8845

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

asp.Net中“当前上下文中不存在名称XXX”的解决方法

今天用visual studio 2008开发网站,重新生成的时候,编译程序的时候出现“当前上下文中不存在名称guestBook”的问题,但实现页面是存在这些控件的,造成这种原因的根本原因在于,当你建...

C# Log4CSharp.LogManager事例

static void Main(string[] args)         {             string date = DateTime.Now.ToString("yyyyMMd...
  • y_f123
  • y_f123
  • 2014年05月20日 09:57
  • 1628
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#之四十一 在Winform中从外部拖动节点到树形结构
举报原因:
原因补充:

(最多只允许输入30个字)