【问题标题】:Updating the icons in an ObjectListView更新 ObjectListView 中的图标
【发布时间】:2011-03-01 10:41:17
【问题描述】:
我在当前项目中使用 TreeListView(ObjectListView 的子类型)。列表中的每个项目都有一个图标,但图标会根据项目的状态而有所不同。例如,如果该项目是只读的,我想使用带有小锁符号的图标。
当项目第一次添加到 TreeListView 时,图标会正确显示,但后来当项目的状态发生变化时,图标不会更新。如何强制控件重新生成所有图标?
【问题讨论】:
标签:
c#
winforms
objectlistview
treelistview
【解决方案1】:
由于在调用第一列的 ImageGetter 时获取了图标,并且通常仅在重新生成行时才调用该图标,因此您似乎可以简单地调用 BuildList 并强制重建所有行。不过,这可能会很昂贵,具体取决于复杂性和行数。
如果可能的话,更好的解决方案是在您知道数据发生变化后立即致电RefreshItem 或RefreshObject。这需要您知道需要更新其图标的特定 OLVListItem(行),或已更改的基础模型对象(因此,如果重建关联的行,将导致图标不同)。