MFC CListCtrl更新任何单元格的文本

时间:2013-01-08 16:16:41

标签: mfc clistctrl

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

这样可以正常工作,除了首先找到行然后需要更新列需要花费时间。

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

1 个答案:

答案 0 :(得分:2)

如果你有很多项目,你应该考虑切换到Virtual Lists。这是访问数据的最快方式。如果您不想为此付出时间,那么最简单的方法是:

  1. 当您使用SetItemData()方法填充CListCtrl存储项目数据中每个项目的ID时。即使在重新排序后,ID也始终与该项目相关联。
  2. 当您需要找到所需的项目时,只需扫描所有项目,但不要使用GetItemText()。请改用GetItemData()。这会更快