从列表视图中删除多个列表项

时间:2015-04-04 17:53:03

标签: c# listview

所以我创建了一个按钮,按下它时会删除列表视图中的多个项目。但是,我似乎只能让它一次删除一个列表项。我知道这个措辞很糟糕,所以我的代码应该有助于解释我在做什么:

    private void button2_Click(object sender, EventArgs e) //remove
    {
        try
        {
            foreach ( ListViewItem eachItem in listView1.SelectedItems)
            {
                listView1.Items.Remove(eachItem);

            }
            task.RemoveAt(listView1.SelectedItems[0].Index); // Remove task from the list "task"

我正在尝试从列表视图中删除所有选定的项目以及名为“任务”的列表。但是,上面的代码行只允许我一次从列表中删除一个选定的项目。

有任何帮助吗?感谢

4 个答案:

答案 0 :(得分:2)

试试这个,

   for (int i = task.SelectedItems.Count - 1; i >= 0; i++)
   {
     if (task.Items[i].Selected)
     {
         task.Items.Remove(listView2.Items[i]);
     }
   }

答案 1 :(得分:1)

我将假设您的任务列表在项目计数中与ListView相同,并且task [0]中的对象与ListView.Items [0]相同。如果是这样,请先从任务中删除该项,然后从ListView中删除该项

// Removing items from the bottom of the selected items and working your way up
for (int i = listView1.SelectedIndices.Count - 1; i >= 0; i--)
{
    task.RemoveAt(listView1.SelectedIndices[i]);
    listView1.Items.RemoveAt(listView1.SelectedIndices[i];
}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

每行只能删除一项,

如果要枚举更改的可枚举,则可以使用“.ToArray”扩展方法。

您还应该使用BeginUpdate / EndUpdate函数来加快速度

https://msdn.microsoft.com/library/system.windows.forms.listview.beginupdate%28v=vs.110%29.aspx