我不知道如何更新值。如果我只是更新这样的值:
objectListView1.Items[i].SubItems[1].Text = views;
将鼠标悬停在项目上后,将其恢复为旧值。我尝试使用CellEditStarting事件但没有效果(可能我用错了)。
我试过这样的更新:
objectListView1.Invoke(new Action(() =>
{
objectListView1.Items[i].SubItems[1].Text = views;
objectListView1.Items[i].SubItems[2].Text = likes;
objectListView1.Items[i].SubItems[3].Text = dislikes;
objectListView1.Items[i].SubItems[5].Text = comments;
}));
objectListView1.Invoke(new Action(() => objectListView1.RefreshObject(objectListView1.Items[i])));
那:
private void objectListView1_CellEditStarting(object sender, CellEditEventArgs e)
{
e.Cancel = true;
objectListView1.RefreshObject(e.RowObject);
}
答案 0 :(得分:3)
使用ObjectListView,您永远不应该直接使用底层的ListViewItem。这些是内部管理的。您只需要关心OLV和相应模型对象的正确配置。
更新并刷新模型项,而不是ListViewItems!
在使用OLV时,您需要了解OLV与经典ListView的不同之处。您在评论中引用的OLV主页很好地解释了这些差异。
抵制添加,编辑,删除或以其他方式搞乱ListViewItems的诱惑 - 它不起作用。
...
小心ListViewItems。您永远不需要将ListViewItems添加到ObjectListView。如果您发现自己在Items集合中添加了东西,创建了ListViewItems,或者将子项添加到任何东西,那么您需要停止