快速实现在Windows应用程序中支持拖拽的TreeView控件(C#)
来源:互联网 发布:淘宝网店外包 编辑:程序博客网 时间:2024/06/05 08:56
概要
快速实现在Windows应用程序中支持拖拽的TreeView控件。
技术描述
TreeView已经提供了支持拖拽的事件:
•
ItemDrag: 用户拖拽TreeNode时触发。当它发生时,调用DoDragDrop方法初始化拖拽过程。
•
DragEnter: 在你初始化拖拽操作后,你必须处理目标TreeView控件的DragEnter事件。 这个事件发生在用户拖拽TreeNode对象从TreeView控件到目标控件范围点内。DragEnter事件能够指定目标TreeView控件,无论拖拽操作对这个控件是否用。代码中仅仅是移动操作。
•
DragDrop: 最后是要处理目标TreeView的DragDrop事件。这个事件发生在用户推拽TreeNode对象并释放到目标控件中。处理这个事件, 返回TreeNode对象并添加到目标TreeView控件上。代码中用Data对象返回。
以下代码实现一个TreeView控件上拖拽任意节点到指定节点上,也可以自己扩展为多个TreeView控件间TreeNode相互拖拽的程序。Data对象的GetData方法返回被拖拽的TreeNode对象。GetNodeAt方法用来确定这个TreeNode对象拖拽到的目标控件(这里就是目标TreeNode对象)。在确定位置之后把源TreeNode对象添加到目标TreeNode对象下面,作为其子结点。因为是移动操作,因此最后会把源TreeNode对象删除掉。
通过以下几步创建实例程序:
1.
创建C# Windows应用程序
2.
界面增加一个TreeView控件
3.
设置TreeView的AllowDrop属性设置为True
4.
Page_Load方法中增加如下代码:
{
// 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.
private void treeView_ItemDrag(object sender,
System.Windows.Forms.ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
6.
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();
}
}
- 快速实现在Windows应用程序中支持拖拽的TreeView控件(C#)
- HOW TO: 编写在 Windows XP 中支持快速用户切换的应用程序
- 编写在 Windows XP 中支持快速用户切换的应用程序
- 编写在 Windows XP 中支持快速用户切换的应用程序
- HOW TO: 编写在 Windows XP 中支持快速用户切换的应用程序
- c# winform TreeView控件中实现拖拽的功能
- c# winform TreeView控件中实现拖拽的功能
- c# winform TreeView控件中实现拖拽的功能
- c# winform TreeView控件中实现拖拽的功能
- 在PB的TreeView控件中实现自动查询
- C# 支持拖放的TreeView控件,文件拖拽大全。
- 需要在TreeView空间中实现拖拽的功能
- .NET中TreeView控件的实现方式
- 支持三态的TreeView控件
- 用javascript 实现的TreeView控件 支持 IE ,Firefox
- 在 Silverlight 应用程序中实现对 FLV 视频格式的支持
- Windows应用程序高级控件之TreeView
- 如何在Windows Form控件TreeView中遍历和查找指定的CheckBox状态
- 给想成为高手的程序员的建议
- Varchar与char的区别
- PHP检验URL是否正确
- 服务自治原则和交易问题
- Linux系统上对目录进行扫描
- 快速实现在Windows应用程序中支持拖拽的TreeView控件(C#)
- 用星际快速入门PHP面向对象编程(修订版)
- Linux学习笔记(1) 当前目录的可执行程序
- 用Remoting 实现一个文件传输组件
- 安装ubuntu后,不能启动桌面环境
- 析异XSLT处理器
- .NET Socket开发之异步Socket(转)
- Building a Gmail Style File Uploading System using ASP.NET 2.0
- oo分析的过程是理解需求