微软自带的Treeview控件不支持同时选多个节点,要实现这个也有办法。我本来想实现的,但是时间有限,想想还是像资源管理器那样用Listview来做多选吧。不过大致摸通了的思路,简单记在这里。主要来自以下两篇文章:
- http://topic.csdn.net/t/20051214/08/4457901.html的1楼
- http://www.vbaccelerator.com/home/VB/Code/Controls/TreeView/Multi-Select_TreeView/article.asp的iterateSelectBetween部分
第1个帖子里介绍了如何让树类记住当前选择节点的模式的方法,我觉得挺好的,主要是在keydown事件里设置模式、在keyup事件里清除模式。第2个帖子里则介绍了如何用集合变量来记住当前所有被选的节点,以及如何在ctrl或shift或没键按下时,切换当前所选的键的状态(是否加入集合,是否更改显示颜色)。
这2个帖子都不能直接用,第1个帖子的问题在于没有shift的代码,另外control时颜色变化得有点不对头,另外也没讲怎么记住所有保存的变量;第2个帖子的问题在于它使用的不是微软的treeview,而是自己开发的vbAccelerator TreeView Control(http://www.vbaccelerator.com/home/VB/Code/Controls/TreeView/TreeView_Control/article.asp)并且还用的是他自己开发的imagelist控件。感觉用别人的控件还是比较有风险的。
不管怎样,大致思路还是可行的,是为记。

本文探讨了使用微软自带的TreeView控件实现多选功能的方法。虽然该控件本身不支持多选,但通过结合两篇参考资料中介绍的技术,可以利用keydown和keyup事件设置和清除选择模式,并使用集合变量记录被选中的节点。
1681

被折叠的 条评论
为什么被折叠?



