c# 中怎样才可以将一个treeview实例真正保存在另一个treeview实例中?一定结贴!

stg609 2008-02-04 10:31:48
在winform编程中,我使用private treeview tr = new treeview()定义了一个全局treeview,然后对tr进行了一系列的操作,现在我又用
private TreeView tr1 = new TreeView();
private TreeView tr2 = new TreeView();
private TreeView tr3 = new TreeView();
定义了3个全局变量,有3个按钮可以对tr进行修改,button1事件是在修改tr后,让tr1=tr,然后将tr恢复原样;button2事件是在修改tr后,让tr2=tr,同样恢复原样。button3的事件是在修改tr后,让tr3=tr,然后也将tr恢复原样。我原本是希望得到3个值不同的tr1,tr2,tr3,可是事实是只要改变tr的值这三个的值就会改变,就好像c++中的指针一样,请问怎样才能将treeview的值真正的保存在另一个treeview中?或者说怎样才能保存一个treeview的状态?
...全文
235 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
重新生成一个对象,然后把数据一点一点复制进去.不然都是指向同一块内存区域,同一个对象.
lake_cx 2008-02-04
  • 打赏
  • 举报
回复
节点内容都不一样,还有什么其他一样的?
其实就是什么都不一样,呵呵
stg609 2008-02-04
  • 打赏
  • 举报
回复
也就是说这三个树只是结点内容不一样,其它都一样!
stg609 2008-02-04
  • 打赏
  • 举报
回复
有3个树,每个树都有类似功能,可以添加结点,删除结点,但是这三个树互不相关。在窗体上同一时间只显示其中一个树。因为具有类似功能,如果真正建了三个树的话,就要写三组类似的事件,感觉很浪费。所以想用三个中间变量来存储三个树的内容,而真正的树只有一个,当显示哪一个树的时候,再把对应的中间变量的值赋给前台的那个真正的树。现在遇到的问题就是这三个中间变量只是引用,所以只要一个树变,那三个变量就会被修改。
avrilxu 2008-02-04
  • 打赏
  • 举报
回复
引用类型肯定是会被修改的,我做树也不少了,我想问一下楼主要实现什么功能
stg609 2008-02-04
  • 打赏
  • 举报
回复
9楼的解释很不错!!!!
lake_cx 2008-02-04
  • 打赏
  • 举报
回复
似乎还是不对,号码视乎没法拷贝,强人再举个更形象的例子
lake_cx 2008-02-04
  • 打赏
  • 举报
回复
深拷贝就是把源对象的内容复制到另一个对象中
浅拷贝就是把源对象的引用给另一个引用

例如:
把手机号码给你有两种含义
1、把手机号码的数字告诉你(浅拷贝)
2、把手机号码的SIM卡送给你(深拷贝)
stg609 2008-02-04
  • 打赏
  • 举报
回复
没有再简单点的办法了吗?
stg609 2008-02-04
  • 打赏
  • 举报
回复
哦!
        
stg609 2008-02-04
  • 打赏
  • 举报
回复
3楼的这种办法好像可以,不过只能这样吗?深拷贝是什么?
lnwuyaowei 2008-02-04
  • 打赏
  • 举报
回复
深拷贝,重写treeivew的clone方法
stg609 2008-02-04
  • 打赏
  • 举报
回复
可能我写的不是很清楚,我的意思就是使用中间变量,就像你说的temp好了,temp = tr,temp不是就有tr的值了吗,然后对tr进行修改,可是修改完你会发现temp的值同样被修改了。我希望是temp的值不要被修改,怎么做?
lake_cx 2008-02-04
  • 打赏
  • 举报
回复
你需要的是一个深拷贝的过程。。。
但是一般不这么做,正确的做法是创建几个不同的树,按某个按钮就显式其中的一颗,其他树都隐藏
shinaterry 2008-02-04
  • 打赏
  • 举报
回复
TreeView temp = null;

temp = tr1;
//temp = tr2;
//temp = tr3;

直接操作temp就可...
lnwuyaowei 2008-02-04
  • 打赏
  • 举报
回复
有时想找个对象,并不一定非得自已来,要靠媒人才行。

楼主设置中间变量

temp = tr1;
tr1=tr;

则可。
stg609 2008-02-04
  • 打赏
  • 举报
回复
最后还是采用建立三个树的方法解决,就是烦了点。我让三个树共用一组事件,在事件中判断哪个树的VISIBLE为true来调用事件。结贴吧。

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧