此代码不会在ObjectListView中设置SelectedObject
:
int ID = 1; // unique
foreach (object o in ObjectListViewInstance.Objects)
{
if (o.ID == ID)
{
this.ObjectListViewInstance.SelectedObject = o;
break;
}
}
我做错了吗?
答案 0 :(得分:1)
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
属性,如果列表视图没有焦点,默认情况下会隐藏突出显示。
答案 1 :(得分:0)
我不确定你的意思,但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
尚未集中,则可能需要Focus。
P.S。:可能有一些本地方法可以从绑定对象中找到相应的ListViewItem
,但我不知道。如果ObjectListView
使用棘手的虚拟化导致Items
和Objects
个集合不同步,可能会有一些问题。