如何通过按删除按钮从ListView中删除所选项?

我想从ListView中删除一个或多个选定的项目。 最好的方法是什么? 我正在使用C#和dotnet Framework 4。

每当用户按下删除键时,您可以通过迭代ListView.SelectedItems集合并为每个项调用ListView.Remove来删除所有选定项。

private void listView1_KeyDown(object sender, KeyEventArgs e) { if (Keys.Delete == e.KeyCode) { foreach (ListViewItem listViewItem in ((ListView)sender).SelectedItems) { listViewItem.Remove(); } } } 

我认为有一个名为listView.Items.Remove(listView.SelectedItem)的东西,您可以从删除按钮的click事件中调用它。 或运行foreach循环并查看是否已选中该项目,将其删除。

 foreach(var v in listView.SelectedItems) { listView.Items.Remove(v) } 

我认为这是最简单的模式。

 private void listView_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Delete) { this.listView.Items.Remove(listView.SelectedItem); } } 

试试这个:

 // Get an array of all selected items ListViewItem[] selectedItems = (from i in listView.Items where i.Selected select i).ToArray(); // Delete the items foreach (ListViewItem item in selectedItems) listView.Items.Remove(item); 

编辑
我刚才注意到ListView类已经有了一个SelectedItems属性。 为了确保您没有更改正在迭代的集合,我首先复制该集合:

似乎上面(使用AddRange )没有用。 我认为通过遍历可枚举的SelectedItems来删除项目会导致exception,但显然它不会。 所以我的原始代码被修改以匹配其他答案…抱歉发布非function代码…

我知道这有点无关,但在WPF中提到的方法并不适用于我。 我必须创建所选项目的副本,并使用这些项目删除列表视图中的项目:

 private void ListBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key == System.Windows.Input.Key.Delete) { var lst = new List(); foreach (var itemSelected in ListBox.SelectedItems) { lst.Add(itemSelected); } foreach (var lstitem in lst) { ListBox.Items.Remove(lstitem); } } }