此代码将不设置SelectedObject
在ObjectListView:
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
控件具有默认情况下隐藏的亮点,如果ListView控件没有焦点的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]
或只是手动取消选择。
此外,你可能会想你的Focus如果ObjectListViewInstance
它尚未关注。
P.S .:有可能会找到绑定的对象相应ListViewItem
一些本地方法,但我不知道它。而且可能有一些疑难杂症,如果ObjectListView
使用棘手的虚拟化,使Items
和Objects
收藏不同步。