对象列表视图不显示选定项目的选定颜色
本文关键字:项目 颜色 显示 列表 视图 对象 | 更新日期: 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()
)。也许是某个奇怪的星座导致了这种情况。