`
RednaxelaFX
  • 浏览: 3053202 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

复制TreeView里的内容?

    博客分类:
  • .NET
阅读更多
今天有同学问该如何clone一个TreeView。然后我问他是要浅拷贝还是深拷贝,他说浅拷贝也没问题,只要看起来内容一样就行。

那就好办了不是么。TreeView本身没办法Clone(),不过只是要内容一样的话,只要把顶层的TreeNode从源TreeView复制到目标TreeView就OK。

假如我有一个Form1,里面有一个treeView1成员。有一个按钮,点击它会创建一个Form2,像这样:
Form1.cs:
using System;
using System.Windows.Forms;

namespace TestTreeView
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form form2 = new Form2(this.treeView1);
            form2.Visible = true;
            form2.Activate();
        }
    }
}


然后Form2里也有一个treeView1成员,并且构造器接受一个TreeView的参数,像这样:
using System.Windows.Forms;

namespace TestTreeView
{
    public partial class Form2 : Form
    {
        public Form2(TreeView tv)
        {
            InitializeComponent();
            this.treeView1.Nodes.Clear();
            foreach (TreeNode node in tv.Nodes)
            {
                TreeNode newNode = node.Clone() as TreeNode;
                this.treeView1.Nodes.Add(newNode);
            }
        }
    }
}


于是我们在Form2的构造器里就把参数里的TreeView的顶层TreeNode都复制了一次。完事。

或者下载一下这个工程去看看吧~

真在工作中肯定是不应该把一个Form的私有TreeView传给别的Form。更好的办法或许是先把TreeNodeCollection给复制到一个一维数组(TreeNodeCollection.CopyTo(TreeNode[] nodeArray, int index)),然后把这个数组传给目标。嘛怎么复制都好,反正浅拷贝的话只要复制顶层节点就OK。

Case closed.
分享到:
评论

相关推荐

    C#TreeView右键菜单操作在编辑树节点

    本篇文章将详细探讨如何实现C# `TreeView`控件的右键菜单功能,包括编辑树节点、增加新节点、删除节点以及复制和粘贴节点。 首先,让我们了解`TreeView`的基本操作。在C#中,`TreeView`控件可以通过`System.Windows...

    Treeview在winform中的运用(从数据库动态添加节点,增加节点、删除节点、复制节点)

    Winform的Treeview控件提供了丰富的事件,如`AfterSelect`、`BeforeExpand`、`BeforeClick`等,这些事件可以用于处理用户交互,比如添加、删除、复制节点,或者显示与节点相关的详细信息。 6. **数据绑定** 考虑...

    将treeView序列化Xml

    - 调用`Deserialize`方法,将XML文件内容转换回`TreeViewData`对象。 - 使用`TreeViewData`对象的`PopulateTree`方法填充`TreeView`控件。 这里需要注意的是,由于`TreeNode.Tag`可能包含不可序列化的对象,因此...

    WPF Treeview拖拽

    在许多应用场景中,我们可能需要实现`TreeView`的拖放(Drag & Drop)功能,使得用户可以自由地调整节点的顺序,或者进行数据的移动和复制。`WPF DragDropTreeView`就是一个专门针对这个需求的实现,它扩展了原生的`...

    C# WinForm中拖拽TreeView节点

    在本场景中,我们关注的是如何实现对TreeView控件中节点的拖放操作。TreeView控件通常用于显示层次结构的数据,拖放功能可以方便地重新组织这些数据结构。 首先,为了实现拖放功能,我们需要开启TreeView控件的`...

    C#TreeView控件转存XML加载XML利用Helper

    C#TreeView控件转存XML加载XML利用Helper 此窗体有两个TreeView 一键复制TreeView1 到 TreeView2 而且保留tree1中的的image 存储xml 加载xml 清除node 加载treeview 用到了tag,selectimage等参数

    WPF TreeView拖拽节点变换位置

    在Windows Presentation Foundation (WPF) 中,`TreeView`控件是一种常见的用户界面元素,用于展示层级结构的数据。本文将深入探讨如何实现`TreeView`中节点的拖拽功能,允许用户通过拖放操作来改变节点的位置,从而...

    实现Treeview节点拖拽功能

    在Windows应用程序开发中,`TreeView`控件常用于呈现层次结构的数据,比如文件系统或组织结构。本项目实现了`TreeView`节点的拖放(Drag and Drop)功能,这对于用户交互和数据操作非常实用。以下是对这个实现的详细...

    vb.net中treeview节点的添加和删除

    在VB.NET编程中,TreeView控件是一个非常常用且功能强大的组件,它用于显示层次结构的数据,比如文件系统、组织结构或者数据库记录等。本篇文章将深入探讨如何在VB.NET中进行TreeView节点的添加和删除操作。 一、...

    C#树形菜单多个子节点剪切复制

    本主题将深入探讨如何在C#中实现`TreeView`控件的多个子节点剪切、复制以及拖拽功能。 首先,要实现树形菜单的剪切和复制功能,我们需要利用`TreeView`控件的事件系统。`TreeView`控件有两个关键的事件:`MouseDown...

    TreeView控件测试程序(免安装).

    6. **自定义行为**:开发者可以扩展TreeView控件的行为,比如添加右键菜单,实现拖放功能,或者在节点间进行复制和剪切操作。 7. **多选模式**:通过设置`CheckBoxes`属性,可以启用复选框功能,让用户能够选择多个...

    TREEVIEW控件实例

    在本实例中,我们探讨的是如何利用TREEVIEW控件实现查询、复制和删除等功能,这对于构建用户友好的文件管理器或者系统设置界面非常有用。 1. **TREEVIEW控件基础** TREEVIEW控件在Windows API中被称作`TVS`(Tree-...

    C#TreeView使用(节点拖曳、节点右键菜单)

    2. **处理DragEnter事件**:当鼠标进入`TreeView`控件时,触发`DragEnter`事件,此时你可以检查拖放的数据是否合法,并根据需要设置`DragEffect`属性,以指示用户可以执行的操作(如移动或复制节点)。 3. **处理...

    treeview目录(资料管理器的实现)

    7. **交互增强**:为了提供更好的用户体验,可以添加更多的交互特性,如右键菜单,支持复制、粘贴、删除等操作,或者添加搜索功能,允许用户快速查找特定的文件或目录。 8. **错误处理**:在处理文件系统操作时,...

    Treeview节点拖拽带Image dragging效果

    在Windows应用程序开发中,`TreeView`控件常用于构建层级结构的数据展示,如文件系统、组织结构等。本文将深入探讨如何实现`TreeView`节点拖拽(DragDrop)时带有Image dragging的动画效果,这对于提升用户体验和...

    C#TreeView将左侧数据添加到右侧树视图

    这个标题"“C#TreeView将左侧数据添加到右侧树视图”"暗示了一个典型的操作:从一个`TreeView`(左侧)选择节点后,将其内容或相关信息添加到另一个`TreeView`(右侧)。这个过程涉及到多个关键知识点,包括`...

    TreeView-ListView右键菜单

    这些处理程序将根据用户的菜单选择执行相应的操作,如添加节点、删除节点、复制或剪切选中的项。 4. **获取选中项**:在`TreeView`中,你需要获取`TreeNode`对象来操作。通过`TreeView.SelectedNode`属性可以得到...

Global site tag (gtag.js) - Google Analytics