新手,关于treeView控件的一些问题,勿喷.

lhw7791086 2013-05-19 10:54:15
有几个基本概念不是很明白,求教:
1. TreeNode tn = new TreeNode();
treeView1.Nodes.Add(tn); 是否是将tn添加为treeView1的根节点?

2. 接着上面的treeView1,假设根节点已存在,那么treeView1.Nodes[0]是否代表树结构的根节点?(即第一个节点)

3. Nodes[0]代表第一个节点的话,能否用treeView1.Nodes[0].Nodes[0]....Nodes[0].Nodes[0]来一直搜索下去(假设树结构很长)?

4. TreeNode tn0 = treeView1.Nodes[0] 是否是将根节点赋给tn0?还是说将根节点与其所有子孙节点集合 一块赋过去?

5. 假设有treeView1,treeView2,其中treeView2为空,能否直接用treeView2 = treeView1来进行复制?

6.有没有什么方法可以将某个节点与其所有子孙节点一块复制的?(Clone是否可行?)
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2013-05-19
  • 打赏
  • 举报
回复
1. TreeNode tn = new TreeNode(); treeView1.Nodes.Add(tn); 是否是将tn添加为treeView1的根节点? 是的,但是TreeView允许多个根节点。 2. 接着上面的treeView1,假设根节点已存在,那么treeView1.Nodes[0]是否代表树结构的根节点?(即第一个节点) 是的。 3. Nodes[0]代表第一个节点的话,能否用treeView1.Nodes[0].Nodes[0]....Nodes[0].Nodes[0]来一直搜索下去(假设树结构很长)? 可以,但是只能找每一级的第一个节点 4. TreeNode tn0 = treeView1.Nodes[0] 是否是将根节点赋给tn0?还是说将根节点与其所有子孙节点集合 一块赋过去? tn0是一个指向这个节点的引用,当然你可以通过它访问到所有的后继子节点。但是要注意,这是一个引用(不是拷贝),如果你修改了tn0.Nodes[0].Nodes[0].Text,那么和直接修改treeView1.Nodes[0].Nodes[0].Nodes[0].Text是一样的。 5. 假设有treeView1,treeView2,其中treeView2为空,能否直接用treeView2 = treeView1来进行复制? 不可以 6.有没有什么方法可以将某个节点与其所有子孙节点一块复制的?(Clone是否可行?) 递归创建。Clone不行。
lhw7791086 2013-05-19
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
1. TreeNode tn = new TreeNode(); treeView1.Nodes.Add(tn); 是否是将tn添加为treeView1的根节点? 是的,但是TreeView允许多个根节点。 2. 接着上面的treeView1,假设根节点已存在,那么treeView1.Nodes[0]是否代表树结构的根节点?(即第一个节点) 是的。 3. Nodes[0]代表第一个节点的话,能否用treeView1.Nodes[0].Nodes[0]....Nodes[0].Nodes[0]来一直搜索下去(假设树结构很长)? 可以,但是只能找每一级的第一个节点 4. TreeNode tn0 = treeView1.Nodes[0] 是否是将根节点赋给tn0?还是说将根节点与其所有子孙节点集合 一块赋过去? tn0是一个指向这个节点的引用,当然你可以通过它访问到所有的后继子节点。但是要注意,这是一个引用(不是拷贝),如果你修改了tn0.Nodes[0].Nodes[0].Text,那么和直接修改treeView1.Nodes[0].Nodes[0].Nodes[0].Text是一样的。 5. 假设有treeView1,treeView2,其中treeView2为空,能否直接用treeView2 = treeView1来进行复制? 不可以 6.有没有什么方法可以将某个节点与其所有子孙节点一块复制的?(Clone是否可行?) 递归创建。Clone不行。
额,前辈,还有个问题,关于问题4引用:如果我创建一个哈希表存储节点,如下: Hashtable ht = new Hashtable(); ht.Add(firstLine, treeView1.Nodes[0]); 进行一些操作后,再将其取出: TreeNode save_tn = new TreeNode(); save_tn = (TreeNode)de.Value; 在此之后对save_tn进行一些添加节点操作,能等同于直接修改treeView1吗?(这里的引用经过哈希表存储再取出后是否还有效?)
lhw7791086 2013-05-19
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
1. TreeNode tn = new TreeNode(); treeView1.Nodes.Add(tn); 是否是将tn添加为treeView1的根节点? 是的,但是TreeView允许多个根节点。 2. 接着上面的treeView1,假设根节点已存在,那么treeView1.Nodes[0]是否代表树结构的根节点?(即第一个节点) 是的。 3. Nodes[0]代表第一个节点的话,能否用treeView1.Nodes[0].Nodes[0]....Nodes[0].Nodes[0]来一直搜索下去(假设树结构很长)? 可以,但是只能找每一级的第一个节点 4. TreeNode tn0 = treeView1.Nodes[0] 是否是将根节点赋给tn0?还是说将根节点与其所有子孙节点集合 一块赋过去? tn0是一个指向这个节点的引用,当然你可以通过它访问到所有的后继子节点。但是要注意,这是一个引用(不是拷贝),如果你修改了tn0.Nodes[0].Nodes[0].Text,那么和直接修改treeView1.Nodes[0].Nodes[0].Nodes[0].Text是一样的。 5. 假设有treeView1,treeView2,其中treeView2为空,能否直接用treeView2 = treeView1来进行复制? 不可以 6.有没有什么方法可以将某个节点与其所有子孙节点一块复制的?(Clone是否可行?) 递归创建。Clone不行。
感谢回复! 问题5,我想把treeView1直接复制到treeView2中,那么该使用什么方法? 问题6,MSDN上说Clone是:复制树节点和以此树节点为根的整个子树,为什么Clone不行呢?如果我找到某个树的根节点(假设只有一个根节点),那么用Clone不就可以将整个树复制了吗?求解。

110,499

社区成员

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

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

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