2 回答
TA贡献1858条经验 获得超8个赞
private void lvTasks_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A && e.Control)
{
lvTasks.MultiSelect = true;
foreach (ListViewItem item in lvTasks.Items)
{
item.Selected = true;
}
}
if (e.KeyCode == Keys.Delete)
for (int i = lvTasks.SelectedItems.Count - 1; i >= 0; i--)
{
ListViewItem itm = lvTasks.SelectedItems[i];
lvTasks.Items[itm.Index].Remove();
}
}
编辑
你的线路 lvTasks.Items.Remove(lvTasks.SelectedItems[0]);
这是问题所在。您只是删除索引 0 处的项目。您需要对它们进行循环。
编辑 2仅当您要删除所有项目时才有效。如果您真的只想删除选定的项目。更改 for 循环并删除 List :
for (int i = lvTasks.SelectedItems.Count - 1; i >= 0; i--)
{
ListViewItem itm = lvTasks.SelectedItems[i];
lvTasks.Items[itm.Index].Remove();
}
那应该有效。
TA贡献1943条经验 获得超7个赞
我会使用一个while循环:
if (e.KeyCode == Keys.Delete)
{
while (lvTasks.SelectedItems.Count > 0)
{
lvTasks.SelectedItems[0].Remove();
}
}
- 2 回答
- 0 关注
- 158 浏览
添加回答
举报