日期:2014-05-19  浏览次数:20700 次

50求一个算法,虽分不多,但求各位大侠帮帮!急呀!
我做一个树形视图,主要是用于权限管理的。
1、一个父级被选中,所有子级被中,同样取消父级,所有子级也被取消。(这个我会做)
2、只要选择任意一个子级,该子级的所有上级同样被选中。
3、当所有子级未被选中时,父级也跟着变。

------解决方案--------------------
一般都是用第归的法子,也有特殊的——例如梅花雪的树控件。
------解决方案--------------------
实际上你要求的是treeview控件具有三态

那你可以考虑使用第三方的控件 如DevExprss控件 支持三态

2,3 是明显的三态 否则你会出现矛盾 如果选择了一个子节点 该父节点应该被选中 但是如果该父节点下的所有子节点未被选中 那么这个父节点又应该是未被选中
------解决方案--------------------
devExpress ……
------解决方案--------------------
2、只要选择任意一个子级,该子级的所有上级同样被选中。
3、当所有子级未被选中时,父级也跟着变。


用代码向父级递归,直到 SelectNode.Level=0;


------解决方案--------------------
比较复杂,得费点时间啊~~~~
------解决方案--------------------
感觉你的想法本身就有问题,如果选中了任意一个节点那么导致所有的节点都被选中了。

因为,你选中了一个节点后,根据(2)它的父节点也被选中,再根据(2)......直至root节点被选中。再根据(1)父节点被选中其子节点也就都被选中了。所以所有节点就都被选中了。
------解决方案--------------------
楼上的理解有问题,所有操作只发生在点鼠标的那一刻,如果点的是子节点,那么关联上父节点。如果点的是父节点,那么处理父节点的父节点及子节点。
------解决方案--------------------
treeView1_NodeMouseClick事件判断子节点与父节点就好了