获取ObjectListView中的SelectedObject索引

本文关键字:索引 SelectedObject 中的 ObjectListView 获取 | 更新日期: 2023-09-27 18:16:16

这是我的代码:

var _ndcAccounts = new List<Account>();
objectListView1.SetObjects(_ndcAccounts);

现在,我想让用户能够使用ObjectListView添加、编辑和删除项目。

添加和删除非常直接。但是对于编辑,我需要做:

_ndcAccounts[_ndcAccounts.FindIndex(account => account == (Account)objectListView1.SelectedObject)] = new Account();

是否有任何方法可以更容易地在列表中找到选定对象的索引?可以对ObjectListView进行排序或筛选。

谢谢。

获取ObjectListView中的SelectedObject索引

假设_ndcAccountsList<Account>,那么您所需要做的就是:

int index = _ndcAccounts.IndexOf((Account)objectListView1.SelectedObject);
//Modify as you see fit
_ndcAccounts[index] = new Account();

如果你想做的只是修改Account对象中的属性,而不给列表中的索引分配一个新的Account对象,那么你所需要做的就是直接修改objectListView1.SelectedObject,因为它应该是对列表中当前选择的Account的引用,对它的任何修改都会反映在列表中(除了创建一个新的Account实例)

我不知道Account的结构,但这里有一个例子。

((Account)objectListView1.SelectedObject).Name = "My New Account";

上面的代码将用新的Name修改Account对象,并且它也将在列表中反映出来,因为您实际上是在修改列表中的项目。

是否有一个SelectedIndices属性在ListView?像这样:

ListView.SelectedIndexCollection indexes = 
    objectListView1.SelectedIndices;
Account selectedAccount = objectListView1.Items[indexes.Items[0]];

您需要检查selectedAccount是否不为空。此外,如果有多个帐户被选中,您可能需要在索引上使用foreach循环来处理此问题,以获得所选帐户的列表。

从olv事件(CellEditFinished)中为我工作。

e.ListViewItem.Index