treeview问题,盼高手解决

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:11:43
怎样引用treeview。selectedNode 实现以下2个功能。
1.重新展开treeview后,展开前所选中的节点仍然是被选中的状态。
2.不管刷新或者展开后,treeview中和textbox中存在相同名称的节点会自动被选中。

高分在线疯狂急等,盼高手高手高高手火速实例解答。。。。。。。。。。。
呵呵十分感谢这位大哥这么有耐心。不过我的程序里只有1个父节点其他的节点都是此节点的子节点。并不存在第3类的其他关系。所以我不需要手动点+号。只用tvPaper.ExpandAll();
tvPaper.SelectedNode = selectNode;
来实现点选,但问题和你说的一样,如果不手动点选的话SelectedNode只会在父类中查询而我要找的节点,所以根本找不到。用什么方法指定查找的范围只限定在子类中呢

1.先把HideSelection设置为false
2.“treeview中和textbox中存在相同名称的节点会自动被选中”得说的明白一点,如果你的TreeView有多个节点和你的textbox中的名称相同,怎么会“自动选中”呢,只能选一个啊,要不然你就只能利用CheckedBox属性了。
也可能我没明白你的第二个问题的意思

我知道你的问题了:
1.你在点那个“+”号的时候,你的父级节点会被选中,那么你本来选中的节点就自然没有了,变成了你这个+号所在的节点
2.和1一样,你只能在全局设置一个TreeNode的全局变量,然后遍历这棵树,动态的指定年底SelectedNode了

你要实现的功能我明白,但是有些矛盾:即使你在“选中一个节点的时候”将它设置为全局变量,但是你在点“+”号的时候同时触发了这个+号所在节点的选中事件,那么这个“+号所在节点”不是就把你全局变量中保存的原始节点给覆盖了么?
简单点的方案,是让你的TreeVew显示CheckedBox,选中的节点就打勾,这样就不再存在状态的问题了

如果你的树这么简单,就容易了:
你在取节点的时候判断Node.Level属性为1就可以了,因为根节点是0,子节点就是1
你只在Level==1的节点中操作,就可以“指定查找的范围只限定在子类中”了