TreeView的结点是否可以复选
编号:QA002006
建立日期: 1999年11月10日 最后修改日期:1999年11月10日
所属类别:
Sun:
操作系统: win98
编程工具: vb6
问题: TreeView的结点是否可以复选,比如按住shift键选择全部?????
回答:
VB6的TreeView没有这个功能。TreeViewX控件(http://www.protoview.com)有这个功能,但这个控件非常贵,估计你不舍得买。有两个解决方案:
1、设置TreeView的CheckBoxes属性为True,这样在每个条目前将显示一个检查框。
2、下面的内容摘自“李海文选”(http://articles.126.com),是针对VC++的,我没有试过把它改写为VB的,你可以尝试一下,或利用VC++开发个ActiveX控件。
TreeView提供了一些对多选的支持,但是不象ListBox那么容易实现。如果你使用TVM_SELECTITEM来选择TreeView的条目的话,只能选择一个。但你可以利用TVM_SETITEM来修改每个TreeView条目的TVIS_SELECTED属性,它决定每个条目的选种、中状态。TVM_SELECTITEM实际上同时修改LVIS_FOCUSED和TVIS_SELECTED属性。具有LVIS_FOCUSED 属性的条目同时只能有一个,而具有TVIS_SELECTED属性的可以同时有多个。Windows在处理TreeView鼠标点击时,它会清除先前具有焦点的条目的TVIS_SELECTED属性,但不会清除其他项的TVIS_SELECTED属性。为了实现多选功能,你还需要处理WM_LBUTTONDOWN消息,以避免Windows清除当前有输入焦点的条目的TVIS_SELECTED属性。这就是实现多选的基本原理。你可以在http://www.techsoft.no/bendik/找到一个基于MFC的类,它实现了多选的功能,你也可以把它改写成SDK方式。
此问题由李海回答。
| |
|
|
| |
|
|