1

这个问题是要了解如何以编程方式更新任何行。细节。我有一个 listcrtl,它接受来自文件或对话框中编辑控件的数据。添加项目后,我将知道我添加的位置,因此我可以更改其子项目文本。我什至在列表中实现了排序功能,所以现在位置不断变化。每行都有一个标识符列,以便我可以识别该行。现在,从外部事件来看,如果我必须更改我知道的 ID 的其他列值,我必须首先通过比较 id 列找到项目的位置,然后使用该位置,我已经设置了 subitemtext .

这很好用,只是先找到行需要时间,然后需要更新列。

现在,为了直接获取行,我需要一些帮助。我已经通过 http://msdn.microsoft.com/en-us/library/windows/desktop/hh298346(v=vs.85).aspx 但这不使用 MFC。请帮助我实现这一目标。

4

1 回答 1

2

如果您有很多项目,您应该考虑切换到虚拟列表。这是访问数据的最快方式。如果您不想为此投入时间,那么对您来说最简单的方法如下:

  1. 当您使用 SetItemData() 方法填充 CListCtrl 时,将每个项目的 ID 存储在项目数据中。ID 将始终与项目相关联,即使在重新排序后也是如此。
  2. 当您需要定位所需的项目时,只需扫描所有项目,但不要使用 GetItemText()。请改用 GetItemData()。这会更快
于 2013-01-09T06:26:44.353 回答