快速实现在Windows应用程序中支持拖拽的TreeView控件(C#)
2008-03-04 18:01
561 查看
概要
快速实现在Windows应用程序中支持拖拽的TreeView控件。
技术描述
loadTOCNode(2, 'summary');
TreeView已经提供了支持拖拽的事件:
以下代码实现一个TreeView控件上拖拽任意节点到指定节点上,也可以自己扩展为多个TreeView控件间TreeNode相互拖拽的程序。Data对象的GetData方法返回被拖拽的TreeNode对象。GetNodeAt方法用来确定这个TreeNode对象拖拽到的目标控件(这里就是目标TreeNode对象)。在确定位置之后把源TreeNode对象添加到目标TreeNode对象下面,作为其子结点。因为是移动操作,因此最后会把源TreeNode对象删除掉。
通过以下几步创建实例程序:
快速实现在Windows应用程序中支持拖拽的TreeView控件。
技术描述
loadTOCNode(2, 'summary');
TreeView已经提供了支持拖拽的事件:
• | ItemDrag: 用户拖拽TreeNode时触发。当它发生时,调用DoDragDrop方法初始化拖拽过程。 |
• | DragEnter: 在你初始化拖拽操作后,你必须处理目标TreeView控件的DragEnter事件。 这个事件发生在用户拖拽TreeNode对象从TreeView控件到目标控件范围点内。DragEnter事件能够指定目标TreeView控件,无论拖拽操作对这个控件是否用。代码中仅仅是移动操作。 |
• | DragDrop: 最后是要处理目标TreeView的DragDrop事件。这个事件发生在用户推拽TreeNode对象并释放到目标控件中。处理这个事件, 返回TreeNode对象并添加到目标TreeView控件上。代码中用Data对象返回。 |
通过以下几步创建实例程序:
1. | 创建C# Windows应用程序 |
2. | 界面增加一个TreeView控件 |
3. | 设置TreeView的AllowDrop属性设置为True |
4. | Page_Load方法中增加如下代码:![]() private void Form1_Load(object sender, System.EventArgs e) ![]() ![]() ![]() ...{ ![]() ![]() // TreeView控件增加一些测试节点 ![]() ![]() TreeNode ParentNode1; ![]() ![]() ParentNode1 = treeView1.Nodes.Add("tv1"); ![]() ![]() ParentNode1.Nodes.Add("tv1FirstChild"); ![]() ![]() ParentNode1.Nodes.Add("tv1SecondChild"); ![]() ![]() ParentNode1.Nodes.Add("tv1ThirdChild"); ![]() ![]() ParentNode1.Nodes.Add("tv1FourthChild"); ![]() ![]() ParentNode1.Expand(); ![]() ![]() ![]() ![]() // TreeView控件增加事件 ![]() ![]() this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag); ![]() ![]() this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter); ![]() ![]() this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop); ![]() ![]() } |
5. | ![]() //treeView_ItemDrag 事件代码: ![]() ![]() private void treeView_ItemDrag(object sender, ![]() ![]() System.Windows.Forms.ItemDragEventArgs e) ![]() ![]() ![]() ...{ ![]() ![]() DoDragDrop(e.Item, DragDropEffects.Move); ![]() ![]() } |
6. | ![]() // treeView_DragEnter事件代码: ![]() ![]() private void treeView_DragEnter(object sender, ![]() ![]() System.Windows.Forms.DragEventArgs e) ![]() ![]() ![]() ...{ ![]() ![]() e.Effect = DragDropEffects.Move; ![]() ![]() } |
7. | ![]() ![]() ![]() // treeView_DragDrop事件代码: ![]() ![]() private void treeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) ![]() ![]() ![]() ...{ ![]() ![]() TreeNode NewNode; ![]() ![]() ![]() ![]() if(e.Data.GetDataPresent(typeof(TreeNode))) ![]() ![]() ![]() ...{ ![]() ![]() Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y)); ![]() ![]() TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt); ![]() ![]() NewNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); ![]() ![]() DestinationNode.Nodes.Add((TreeNode) NewNode.Clone()); ![]() ![]() DestinationNode.Expand(); ![]() ![]() //删除已经移动的节点 ![]() ![]() NewNode.Remove(); ![]() ![]() } ![]() ![]() } ![]() |
相关文章推荐
- 70-316 使用Microsoft Visual C# .NET and Microsoft Visual Studio .NET 开发及实现基于Windows的应用程序 考点整理
- wince应用程序(实现 获取存储设备的大小、实现 WINCE 系统重新启动、隐藏/显示 Windows 任务栏等等)【C#】
- windows通过"运行"win+r实现快速打开应用程序
- wince应用程序(实现 获取存储设备的大小、实现 WINCE 系统重新启动、隐藏/显示 Windows 任务栏等等)【C#】
- 【转】使用C# 完美实现多语言版本Windows应用程序
- C#实现外部图片的拖拽到应用程序的简单功能,附全部源码,供有需要的参考
- C#完美实现多语言版本Windows应用程序
- 使用C# 完美实现多语言版本Windows应用程序
- C# 支持拖放的TreeView控件,文件拖拽大全。
- 使用C# 完美实现多语言版本Windows应用程序
- C#Windows 窗体设计-实现欢迎界面-显示About窗体-在托盘中写入应用程序图标
- 使用C# 完美实现多语言版本Windows应用程序
- Windows 7中,用Visual Studio开发WPF应用程序,实现从Windows Explorer中拖拽文件到应用程序,始终显示“无法拖放”符号问题解决方案
- C#实现外部图片的拖拽到应用程序的简单功能,附全部源码,供有需要的参考
- C# 图片盖章功能实现,支持拖拽-旋转-放缩-保存
- C# 实现的图片盖章功能,支持拖拽、旋转、放缩、保存
- C# 完美实现多语言版本Windows应用程序
- C#--,设计一个windows应用程序,实现不同运算。
- vs2010 创建windows服务( Asp.net(C#) windows 服务 用于实现计划任务,事件监控等)
- Asp.net(C#) windows 服务{用于实现计划任务,事件监控等}