2015-04-04 312 views
0

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

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" 

我试图让它删除我的列表视图所有选定的项目,以及我的列表命名为“任务”不过,行上面的代码只允许我一次从列表中删除一个选定的项目。

任何帮助?由于

+1

有没有内置到ListView,让您删除多个项目的任何方法一次,所以我认为你坚持循环。这是一个性能问题吗? – 2015-04-04 18:00:20

+0

我有一个列表包含多个属性的项目,列表视图只显示列表中每个项目的第一个属性是标题。它从列表视图中删除选定的项目,我只是想知道是否有办法让它从列表本身中删除所有选定的项目 – Snowflake232 2015-04-04 18:05:33

+0

@ Jamie1234 [清除列表视图](http://stackoverflow.com/questions/) 435379/C-尖锐明确的所有项功能于列表视图) – Eldho 2015-04-04 19:09:34

回答

1

我会假设你的任务列表是平等的,在项目数,你的ListView,并且在任务的对象[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]; 
} 
0

试试这个,

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

你应该提供一些你的解决方案的解释,指出了差异。这是SO答案的风格。 – 2017-08-02 14:05:57