不可调用的成员“System.Windows.Forms.ListView.SelectedItems”不能像方法一样使

本文关键字:方法 不能 一样 SelectedItems 成员 调用 System ListView Forms Windows | 更新日期: 2023-09-27 18:31:54

尝试从foreach()中选择项目时失败。我的代码是这样的:

foreach (ListViewItem LISTA in this.lstImgAdded.SelectedItems)
{
    lstImgAdded.SelectedItems(i).Remove();
}

不可调用的成员“System.Windows.Forms.ListView.SelectedItems”不能像方法一样使

无论语法错误如何(必须对索引器使用 [i] 而不是 (i)),此处都不需要索引器。只需直接在枚举项上使用ListViewItem.Remove

foreach (ListViewItem item in lstImgAdded.SelectedItems)
{
    item.Remove();
}

此外,您应该注意两件事:

  • 不能使用 ListView.SelectedListViewItemCollection.Remove ,因为它是只读的(请参阅"备注"部分或实现):

  • 这是一种罕见的情况,当可以安全地修改序列时,在循环访问它时,因为ListView.SelectedListViewItemCollection.GetEnumerator返回所选项的"快照"的枚举器。

从最后开始计数,一直持续到达到零。

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

如果您有 10 个项目并删除第一个项目,则列表只剩下 9 个项目。一旦您尝试删除丢失的项目(在本例中为 6 号),您就会收到错误。