Получить SelectedObject Index в ObjectListView
Это мой код:
var _ndcAccounts = new List<Account>();
objectListView1.SetObjects(_ndcAccounts);
Теперь я хочу дать пользователю возможность добавлять, редактировать и удалять элементы, используя ObjectListView.
Добавление и удаление довольно просты. Но для редактирования мне нужно сделать:
_ndcAccounts[_ndcAccounts.FindIndex(account => account == (Account)objectListView1.SelectedObject)] = new Account();
Есть ли способ легче найти индекс выбранного объекта в списке? ObjectListView может быть отсортирован или отфильтрован.
Благодарю.
3 ответа
При условии, что _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)objectListView1.SelectedObject).Name = "My New Account";
Вышеуказанное изменило бы объект Account с новым именем, и оно также будет отражено в списке, так как вы фактически изменяете элемент в списке.
Есть ли свойство SelectedIndices как в ListView? Что-то вроде этого:
ListView.SelectedIndexCollection indexes =
objectListView1.SelectedIndices;
Account selectedAccount = objectListView1.Items[indexes.Items[0]];
Вам нужно проверить, если selectedAccount не является нулевым. Кроме того, если выбрано несколько учетных записей, вам может потребоваться foreach
Цикл по индексам, чтобы получить список выбранных учетных записей.
Следующее сработало для меня из события olv (CellEditFinished).
e.ListViewItem.Index