如何在 Visual C# .NET 应用程序中添加树视图拖放功能

来源:互联网 发布:人工智能的神经元 编辑:程序博客网 时间:2024/05/22 13:45
创建示例的步骤 1. 在 Visual C# .NET 中新建一个 Windows 应用程序。默认情况下将创建 Form1。 2. 使用工具箱将两个树视图控件添加到 Form1 中。TreeView1 和 TreeView2 在默认情况下已创建。 3. 要允许拖放树视图控件,请在“属性”窗口中,将 TreeView1 和 TreeView2 的 AllowDrop 属性更改为 True。 4. 双击 Form1 以为 Form1 的 Load 事件生成方法处理程序。添加以下代码,以使用 TreeNode 对象填充这两个树视图控件,并定义事件处理程序: private void Form1_Load(object sender, System.EventArgs e) { TreeNode ParentNode1; TreeNode ParentNode2; ParentNode1 = treeView1.Nodes.Add("tv1"); ParentNode1.Nodes.Add("tv1FirstChild"); ParentNode1.Nodes.Add("tv1SecondChild"); ParentNode1.Nodes.Add("tv1ThirdChild"); ParentNode1.Nodes.Add("tv1FourthChild"); ParentNode1.Expand(); ParentNode2 = treeView2.Nodes.Add("tv2"); ParentNode2.Nodes.Add("tv2FirstChild"); ParentNode2.Nodes.Add("tv2SecondChild"); ParentNode2.Expand(); this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag); this.treeView2.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag); this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter); this.treeView2.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter); this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop); this.treeView2.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop); } 5. 添加下面的方法处理程序,以处理 TreeView1 或 TreeView2 的 ItemDrag 事件,具体取决于拖放操作的方向。此代码对当前拖动的项启动一个移动操作。 private void treeView_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e) { DoDragDrop(e.Item, DragDropEffects.Move); } 6. 添加下面的方法处理程序,以处理 TreeView1 或 TreeView2 的 DragEnter 事件,具体取决于拖放操作的方向: private void treeView_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { e.Effect = DragDropEffects.Move; } 7. 将下面的方法添加到 Form1 类中,让它紧跟在上一步中添加的方法后面: private void treeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { TreeNode NewNode; if(e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false)) { 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"); if(DestinationNode.TreeView != NewNode.TreeView) { DestinationNode.Nodes.Add((TreeNode) NewNode.Clone()); DestinationNode.Expand(); //Remove Original Node NewNode.Remove(); } } } 8. 生成并运行项目。将节点从一个树视图控件拖到另一个树视图控件中。请注意,该节点已从源控件中移除,并已作为子节点添加到目标控件中。
原创粉丝点击