获取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进行排序或筛选。
谢谢。
假设_ndcAccounts
是List<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