Удалить выбранный элемент из ListView

Как я могу удалить выбранный элемент из списка?

6 ответов

foreach ( ListViewItem eachItem in listView1.SelectedItems)
{
    listView1.Items.Remove(eachItem);
}

где listView1 - это идентификатор вашего списка.

Когда есть только один элемент (Multiselect = false):

listview1.SelectedItems[0].Remove();

Для более чем одного предмета (Multiselect = true):

foreach (ListViewItem eachItem in listView1.SelectedItems)
{
    listView1.Items.Remove(eachItem);
}
listBox.Items.RemoveAt(listBox.SelectedIndex);

Ну, хотя уже очень поздно, я недавно пересек эту проблему, так что кто-то может снова столкнуться с этой проблемой. На самом деле мне нужно было удалить все выбранные элементы, но ни один из приведенных выше кодов у меня не работал. Он всегда вызывает ошибку, поскольку коллекция изменяется во время выполнения цикла foreach. Мое решение было таким:

while (listView1.SelectedIndex > 0)
{
    listView1.Items.RemoveAt(listView1.SelectedIndex);
}

Он не выдаст ошибку, поскольку вы получите позицию последнего выбранного элемента (в настоящее время), поэтому даже после его удаления вы получите то место, где он находится сейчас. Когда элементы больше не выбраны, SelectedIndex возвращает -1 и завершает цикл. Таким образом, вы можете убедиться, что больше нет выбранного элемента или что код попытается удалить элемент с отрицательным индексом.

listView1.Items.Cast<ListViewItem>().Where(T => T.Selected)
    .Select(T => T.Index).ToList().ForEach(T => listView1.Items.RemoveAt(T))

Еще один способ удалить элемент (ы) из ListView контроль (который имеет GridView) (в WPF)-

var selected = myList.SelectedItems.Cast<Object>().ToArray();
foreach(var item in selected)
{
    myList.Items.Remove(item);
}

где myList это имя твоего ListView контроль

foreach (DataGridViewRow dgr in dgvComments.SelectedRows)
            dgvComments.Rows.Remove(dgr);
Другие вопросы по тегам