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

时间:2011-07-26 11:59:57

标签: c# winforms .net-4.0

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

5 个答案:

答案 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);
                }

            }
        }