这是我的代码:
var _ndcAccounts = new List<Account>();
objectListView1.SetObjects(_ndcAccounts);
现在,我想让用户能够使用ObjectListView添加,编辑和删除项目。
添加和删除非常简单。但是对于编辑,我需要这样做:
_ndcAccounts[_ndcAccounts.FindIndex(account => account == (Account)objectListView1.SelectedObject)] = new Account();
有没有办法更容易在列表中找到所选对象的索引?可以对ObjectListView进行排序或过滤。
感谢。
答案 0 :(得分:3)
如果_ndcAccounts
是List<Account>
,那么您需要做的就是这个。
int index = _ndcAccounts.IndexOf((Account)objectListView1.SelectedObject);
//Modify as you see fit
_ndcAccounts[index] = new Account();
如果您要做的只是修改Account对象中的属性而不在列表中为该索引分配新的帐户对象,那么您需要做的就是直接修改objectListView1.SelectedObject
,因为它应该是对当前的引用在列表中选择Account
,对其的任何修改都将反映在列表中(除了创建新的帐户实例)
我不知道Account
的结构,但无论如何这里都是一个例子。
((Account)objectListView1.SelectedObject).Name = "My New Account";
以上内容将使用新名称修改Account对象,并且它将在列表中反映出来,因为您实际上正在修改列表中的项目。
答案 1 :(得分:0)
ListView中是否有SelectedIndices属性?像这样:
ListView.SelectedIndexCollection indexes =
objectListView1.SelectedIndices;
Account selectedAccount = objectListView1.Items[indexes.Items[0]];
您需要检查selectedAccount是否为空。此外,如果选择了多个帐户,您可能需要通过索引上的foreach
循环来处理此问题,以获取所选帐户的列表。
答案 2 :(得分:0)
以下从 olv 事件(CellEditFinished)对我有用。
e.ListViewItem.Index