Vb.net从多个列表视图中删除

Vb.net从多个列表视图中删除,vb.net,listview,Vb.net,Listview,我有一个将数据插入两个ListView的系统,当它在Listviews1中选择一行并单击按钮删除所选行时。 但是我需要删除到另一个Listview,因为数据是相同的。 要在Listviews1中删除,我使用以下代码: 将lvi调整为ListViewItem For Each lvi In lv1.SelectedItems lvi.Remove() Next 我认为最简单的方法是运行反向for循环,并根据找到的任何选定项的索引从两个列表视图中删除。这样做的原因

我有一个将数据插入两个ListView的系统,当它在Listviews1中选择一行并单击按钮删除所选行时。 但是我需要删除到另一个Listview,因为数据是相同的。 要在Listviews1中删除,我使用以下代码:

将lvi调整为ListViewItem

    For Each lvi In lv1.SelectedItems

        lvi.Remove()
    Next

我认为最简单的方法是运行反向
for循环
,并根据找到的任何选定项的索引从两个列表视图中删除。这样做的原因是,如果自顶向下运行,则会更改集合,并且无法删除项,因为这会更改索引。这是我要开始的

    For x As Integer = Lv1.Items.Count - 1 To 0 Step -1 
        If Lv1.Items(x).Selected = True Then
            Lv2.Items(x).Remove()
            Lv1.Items(x).Remove()
        End If
    Next

此代码假定Lv1是包含选定项的listview。它所做的是从列表中的最后一项开始,检查是否选中它。如果是,它将根据其索引从lv2和自身中删除该项。这会在1级上重复,直到达到索引0。它还要求两个lv具有相同的数据,您所述的数据实际上是相同的。您没有指定的是每个lv的数据是否也在同一行中。如果不是这样,这将不起作用。它仅逐行删除。换言之,如果您的lv1中有行<代码>红色、绿色和蓝色,lv2中有行<代码>蓝色、红色和绿色,并且您在lv1中点亮了红色,那么蓝色将从lv2中删除,因为蓝色与红色在同一行中。

是否在其他列表视图中选择了相同的项目?