如何通过按删除按钮从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