在ObjectListView中获取SelectedObject索引

时间:2014-08-04 20:36:31

标签: c# winforms objectlistview

这是我的代码:

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

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

添加和删除非常简单。但是对于编辑,我需要这样做:

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

有没有办法更容易在列表中找到所选对象的索引?可以对ObjectListView进行排序或过滤。

感谢。

3 个答案:

答案 0 :(得分:3)

如果_ndcAccountsList<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