TreeView 移动节点的问题

zhoujk 2007-04-16 02:19:43
环境:XPSP2 + C#.net 2005 + ACCESS
问题:
在将ACCESS中的数据中有两种内容,其一是枝(可包含子节点)和叶(不可包含子节点),载入 TreeView 时,为了避免进行递归操作,用了如下过程:
因为树状目录是动态的,如果一开始就移动到正确的位置,可能这个时候它的父节点还没有建立,将报错。因此先将所有的枝数据载入到根,然后将其移动到正确的位置。在移动到正确位置的过程中,如果先将某个枝节点的内容装完,然后再将其移动到它的父节点,则返回正确的状态。但是如果将某个已经移动到正确位置的节点定义到 TreeNode 对像,则只能返回 null, 并且无法将其子节点移入。但是与此同时,点击该节点,却能够返回正确的Name 或 Text 值,这是为什么?
这个流程在VB6里已经实现过,但是在为了学习 C# 而重写该代码时去遭遇上述错误,请问是为什么呀?给个思路也行。
因为这个流程没有通过,所以后续的加入内容的流程就没有继续做。
...全文
269 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujk 2007-04-17
  • 打赏
  • 举报
回复
怎么没人回我呀,自己顶
zhoujk 2007-04-16
  • 打赏
  • 举报
回复
回bitpolar(独自看天)
我的流程很简单,就三块:
1st:把每个文件夹放到根;
2nd:把每个文件夹移动到正确的父文件夹(如果父文件夹是根则不执行);
3nd:将另一个数据表中的文件内容放到正确的文件夹。
这种方法做的流程是比较长,但是应该比递归要好读呀,而且应该很快,因为没有太多的条件判断式。现在的问题是有几个文件夹 A\B\C,如果我先把C放进B,再把B放到A,没问题,如果我把B放到A,然后再把C放到B,就会报错,其中ABC均为 TreeNode 对象,报错时检查,发现 B 的Text 和 Name 都没有内容,NULL,我是赋了值的呀,为什么?
bitpolar 2007-04-16
  • 打赏
  • 举报
回复
你的流程,即便在VB6中没有问题了,必定也过于复杂,可读性很难保证
bitpolar 2007-04-16
  • 打赏
  • 举报
回复
因为节点可以拖来拖去,所以并不能保证依靠节点载入的顺序(尽管可以排序)都是从父到子.

方案一
1.先载入根节点
2.当某节点展开的时候载入其子节点(可以包括子节点的子节点)
我就是这么实现的

方案二
1.载入所有节点到一个DataTable中
2.插入根节点
3.对于当前每一个节点,到DataTable中使用xpath查询其子节点执行插入
这么做可以用递归实现

110,535

社区成员

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

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

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