所以我创建了一个按钮,按下它时会删除列表视图中的多个项目。但是,我似乎只能让它一次删除一个列表项。我知道这个措辞很糟糕,所以我的代码应该有助于解释我在做什么:
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"
我正在尝试从列表视图中删除所有选定的项目以及名为“任务”的列表。但是,上面的代码行只允许我一次从列表中删除一个选定的项目。
有任何帮助吗?感谢
答案 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