复制TreeView里的内容?

今天有同学问该如何clone一个TreeView。然后我问他是要浅拷贝还是深拷贝,他说浅拷贝也没问题,只要看起来内容一样就行。

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

假如我有一个Form1,里面有一个treeView1成员。有一个按钮,点击它会创建一个Form2,像这样:
Form1.cs:
C#代码 复制代码  收藏代码
  1. using System;   
  2. using System.Windows.Forms;   
  3.   
  4. namespace TestTreeView   
  5. {   
  6.     public partial class Form1 : Form   
  7.     {   
  8.         public Form1()   
  9.         {   
  10.             InitializeComponent();   
  11.         }   
  12.   
  13.         private void button1_Click(object sender, EventArgs e)   
  14.         {   
  15.             Form form2 = new Form2(this.treeView1);   
  16.             form2.Visible = true;   
  17.             form2.Activate();   
  18.         }   
  19.     }   
  20. }  


然后Form2里也有一个treeView1成员,并且构造器接受一个TreeView的参数,像这样:
C#代码 复制代码  收藏代码
  1. using System.Windows.Forms;   
  2.   
  3. namespace TestTreeView   
  4. {   
  5.     public partial class Form2 : Form   
  6.     {   
  7.         public Form2(TreeView tv)   
  8.         {   
  9.             InitializeComponent();   
  10.             this.treeView1.Nodes.Clear();   
  11.             foreach (TreeNode node in tv.Nodes)   
  12.             {   
  13.                 TreeNode newNode = node.Clone() as TreeNode;   
  14.                 this.treeView1.Nodes.Add(newNode);   
  15.             }   
  16.         }   
  17.     }   
  18. }  


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

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

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

Case closed.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值