对象列表视图不显示选定项目的选定颜色

本文关键字:项目 颜色 显示 列表 视图 对象 | 更新日期: 2023-09-27 17:55:51

我有一个ObjectListView,它本质上是标准.NET ListView的包装器。 我的问题是我无法找出正确的方法调用顺序来向控件添加新对象,滚动控件以确保对象可见,然后选择对象。 下面是我实现此目的的代码。 一切正常,但由于某种原因,在我单击其中一列或重新调整其大小之前,所选项目/对象的背景颜色不会显示。 我不确定控件是否没有聚焦还是什么。

// objectListViewItems is of type BrightIdeasSoftware.ObjectListViewItems
objectListViewItems.AddObject(e.InsertedItem);
objectListViewItems.Refresh();
objectListViewItems.Focus();
objectListViewItems.EnsureModelVisible(e.InsertedItem);
objectListViewItems.SelectedObject = e.InsertedItem;
objectListViewItems.Focus();

下面的代码更新了 ObjectListView 中的一个项目,并且工作正常。 不知道我在上面做错了什么...

objectListViewItems.RefreshObject(itemToEdit);
objectListViewItems.Focus();
objectListViewItems.SelectObject(itemToEdit);

对象列表视图不显示选定项目的选定颜色

这应该像你建议的那样工作(我多次这样做)。但是,调用Refresh()和第二个Focus()是不必要的。另外,我宁愿使用SelectObject()而不是SelectedObject属性。

喜欢这个:

objectListView.AddObject(newItem);
objectListView.Focus();
objectListView.EnsureModelVisible(newItem);
objectListView.SelectObject(newItem);

此外,请确保之后没有执行任何代码,这可能会导致另一个控件获得焦点。

要缩小正在发生的事情,您可以尝试设置

objectListView.HideSelection = false;

至于 正常ListView ,这可确保当前选择保持可见(但"灰显"),即使控件失去焦点。

如果您使用了设计器,请发布完整的 OLV 配置(来自 InitializeComponent())。也许是某个奇怪的星座导致了这种情况。