Vb.net 如何防止listview中的重复项

Vb.net 如何防止listview中的重复项,vb.net,winforms,listview,Vb.net,Winforms,Listview,我想在单击按钮时向ListView添加一个项目,并添加数量。我一直在说一个错误 无法在多个位置添加或插入项目“Burger”。必须首先将其从当前位置删除或克隆 以下是我目前的代码: For Each listItem As ListViewItem In lvOrder.Items If Not lvOrder.Items.ContainsKey("Burger") Then listItem.Text = "Burger" listItem.SubIt

我想在单击按钮时向ListView添加一个项目,并添加数量。我一直在说一个错误

无法在多个位置添加或插入项目“Burger”。必须首先将其从当前位置删除或克隆

以下是我目前的代码:

For Each listItem As ListViewItem In lvOrder.Items
    If Not lvOrder.Items.ContainsKey("Burger") Then

        listItem.Text = "Burger"
        listItem.SubItems.Add(1) 'Quantity
        listItem.SubItems.Add(50.0) 'Price

        lvOrder.Items.Add(listItem)
     Else
        MessageBox.Show("Item already exist")
    End If
Next

不能向ListView添加多个具有相同名称(键)的项。但是,我认为您实际上要做的是编辑现有项目

您可以大大简化代码。添加以下项目:

Dim newListItem As New ListViewItem
newListItem.Text = "Burger"
newListItem.Name = "Burger" ' this is a unique key
lvOrder.Items.Add(newListItem)
请注意,文本和名称是不同的属性。文本是向用户显示的内容,名称是帮助ListView跟踪已添加项目的键。它可以与文本相同,也可以完全不同

如果您需要修改已添加的项目,只需使用键查找即可

lvOrder.Items.Item("Burger").SubItems.Add(1) ' Quantity
lvOrder.Items.Item("Burger").SubItems.Add(50.0) ' Price

不需要循环通过每一个项目,以找到一个你正在寻找的

谢谢你回答这个问题。“它现在工作得很好。”“太好了!很乐意帮忙。:)如果这完全回答了您的问题,您可以单击复选标记将其作为答案接受。