0

我在一个包含大约 700 个项目的 activex 控件内有一个列表视图。当过滤器事件发生时,使用下面的代码从列表视图中删除项目,只留下几个过滤的项目。我注意到 700 个项目中的前 300 个已成功删除,但其余的则无法删除(ListView_DeleteItem 返回 false)。在随后对代码的调用中,应该删除的剩余项目的一半被删除,然后再删除一半,等等。最终所有应该删除的项目都已经被删除,但是可能需要对下面的循环进行 5 或 6 次调用。

    for (size_t rowNum=0; rowNum < toDelete.size() ; rowNum ++)
{
    bool result = ListView_DeleteItem(listCtrl, rowNum);
}
4

1 回答 1

2

试试这个 :

for (size_t rowNum=0; rowNum < toDelete.size() ; rowNum ++)
{
    bool result = ListView_DeleteItem(listCtrl, 0);
}

这是您的代码发生的情况:

初始名单:

Item 1
Item 2
Item 3
Item 4

循环的第一遍:删除索引为 0 的项目(项目 1),列表变为:

Item 2
Item 3
Item 4

循环的第二遍:删除索引为 1 的项目(现在是项目 3),列表变为:

Item 2
Item 4

等等。

于 2013-09-13T12:12:53.343 回答