C#ObjectListView - 手动设置SelectedObject

问题描述 投票:0回答:2

此代码将不设置SelectedObject在ObjectListView:

int ID = 1; // unique

foreach (object o in ObjectListViewInstance.Objects)
{
    if (o.ID == ID)
    {
        this.ObjectListViewInstance.SelectedObject = o;
        break;
    }
}

难道我做错了什么?

c# object listviewitem objectlistview
2个回答
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); 
}

也请记住,ListViewObjectListView控件具有默认情况下隐藏的亮点,如果ListView控件没有焦点的HideSelection属性。


0
投票

我不知道你的意思,但SelectedObject财产为我工作。它实际上是选择项目,但它并不突出它的变化(背景为另一种颜色)。

ListViewItem.SelectedListViewObject 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使用棘手的虚拟化,使ItemsObjects收藏不同步。

© www.soinside.com 2019 - 2024. All rights reserved.