C#ObjectListView-手动设置SelectedObject
本文关键字:SelectedObject 设置 C#ObjectListView- | 更新日期: 2023-09-27 18:20:37
此代码不会在ObjectListView:中设置SelectedObject
int ID = 1; // unique
foreach (object o in ObjectListViewInstance.Objects)
{
if (o.ID == ID)
{
this.ObjectListViewInstance.SelectedObject = o;
break;
}
}
我做错什么了吗?
ObjectListView
对它正在处理的对象一无所知,因此首先必须将ObjectListView.Objects
强制转换为您正在使用的类型myObjectType
。然后,您可以使用一些不错的LINQ功能直接找到正确的对象,而无需遍历所有对象。最后,您可以让ObjectListView
选择项目。
int ID = 1; // unique
myObjectType selectItem =
this.ObjectListViewInstance.Objects.Cast<myObjectType>().FirstOrDefault(o => o.ID == ID);
if (selectItem != null)
{
this.ObjectListViewInstance.SelectObject(selectItem);
}
还请记住,ListView
和ObjectListView
控件具有HideSelection
属性,如果列表视图没有焦点,则默认情况下会隐藏高亮显示。
我不知道你的意思,但SelectedObject
属性适用于我。它实际上选择了项目,但没有突出显示它(将背景更改为另一种颜色)。
但ListViewItem.Selected
(ListViewObject
Items
实际上是普通的ListViewItems)可以做到这一点,所以Selected属性可能正是您所需要的:
int ID = 1; // unique
int index = 0;
foreach (object o in ObjectListViewInstance.Objects)
{
if (o.ID == ID)
break;
index++;
}
this.ObjectListViewInstance.Items[index].Selected = true;
如果您想取消选择其他项目(因为它不会删除其他项目的选择),您可以使用this.ObjectListViewInstance.SelectedObject = this.ObjectListViewInstance.Objects[index]
,也可以手动取消选择。
此外,如果ObjectListViewInstance
还没有聚焦,您可能需要将其聚焦。
附言:可能有一些本机方法可以从绑定对象中找到相应的ListViewItem
,但我不知道。如果ObjectListView
使用棘手的虚拟化,使Items
和Objects
集合不同步,可能会有一些问题。