我想从ListView中删除一个或多个选定的项目。 最好的方法是什么? 我正在使用C#和dotnet Framework 4。
答案 0 :(得分:10)
每当用户按下删除键时,您可以通过迭代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();
}
}
}
答案 1 :(得分:6)
我认为有一个名为listView.Items.Remove(listView.SelectedItem)的东西,您可以从删除按钮的click事件中调用它。或运行foreach循环并查看该项是否已被选中,将其删除。
foreach(var v in listView.SelectedItems)
{
listView.Items.Remove(v)
}
答案 2 :(得分:3)
我认为这是最简单的模式。
{{1}}
答案 3 :(得分:2)
试试这个:
// 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
枚举来删除项目会导致异常,但显然不会。所以我的原始代码被修改以匹配其他答案...抱歉发布非功能代码......
答案 4 :(得分:0)
我知道这有点无关但在WPF中提到的方法对我不起作用。我必须创建所选项目的副本,并使用这些项目删除列表视图中的项目。:
private void ListBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Delete)
{
var lst = new List<object>();
foreach (var itemSelected in ListBox.SelectedItems)
{
lst.Add(itemSelected);
}
foreach (var lstitem in lst)
{
ListBox.Items.Remove(lstitem);
}
}
}