如何在 Visual C# .NET 應用程序中添加樹視圖拖放功能

創建示例的步驟 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. 生成並運行項目。將節點從一個樹視圖控件拖到另一個樹視圖控件中。請注意,該節點已從源控件中移除,並已作爲子節點添加到目標控件中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章