1

我有一个 Treeview 控件,每个项目都有一个复选框。在根级别,我有大约 100 个项目,每个这样的项目还有 100 个其他项目,因此遍历树大约需要 1-2 秒的时间。我想减少那个时间。所以这是我的问题,如何在不遍历树视图控件的情况下获取树视图控件中选中项目的数量?

我检查了msdn。我们有“Treeview_GetCount”,但它给出了树视图控件中的项目总数。我知道我可以从根开始并递归地向下遍历以检查树视图中每个项目的状态,最后获得具有检查状态的项目数。

或者,我们可能有一个变量(类成员或全局),并在检查项目时增加它,并在未检查项目时减少它,这最终会给我一个实例中的项目数。

还有比这些更好的方法吗?

4

2 回答 2

1

不幸的是,您必须遍历调用TreeView_GetCheckState的树视图才能获取此类信息。lParam或者,您可以在插入项目时通过of关联检查状态,TVITEM但这仍然需要遍历。

遍历控件有什么问题?如果由于某种原因太慢,您始终可以将数字存储在您更新的变量中。

于 2012-07-11T12:44:54.790 回答
0

没有任何通知。不过,您可以自己编写。只需处理鼠标单击并使用 hittest 来查看鼠标光标是否在状态图像上。为了完整起见,请处理空格键并为所选项目发送相同的通知。

于 2016-01-21T12:19:08.520 回答