如果记录中有重复记录,如何删除listview中的记录?它也将删除原始的。例如:
Column1
AAA
BBB
CCC
AAA
DDD
在这种情况下,第一个和第四个都将被删除。 最终输出将是
Column1
BBB
CCC
DDD
请帮助,谢谢。
我试过这个
dim ctr as integer
dim ctr2 as integer
ctr = 0
Do
ctr2 = 0
Do
If ListView3.Items.Item(ctr).Text = ListView3.Items.Item(ctr2).Text And ListView3.Items(ctr).SubItems(1).Text = ListView3.Items(ctr2).SubItems(1).Text Then
ListView3.Items(ctr).Remove()
ListView3.Items(ctr2).Remove()
End If
ctr2 = ctr2 + 1
Loop Until ctr = ListView3.Items.Count
ctr = ctr + 1
Loop Until ctr = ListView3.Items.Count
答案 0 :(得分:1)
从您的代码我知道列表视图有两列,您想要删除重复的行。
首先,当您发现重复行时,不能直接从列表视图中删除,因为它会对排序项和列表产生问题。 示例:您有以下列表 AA BB CC
CC项目的索引= 2,如果删除BB项目,CC将具有索引= 1。
这是修改您的代码以删除重复的行。
Dim ctr As Integer
Dim ctr2 As Integer
Dim RemovedItemsIndexs As New Collection
ctr = 0
Do
ctr2 = 1
Do
If ListView3.Items.Item(ctr).Text = ListView3.Items.Item(ctr2).Text And ListView3.Items(ctr).SubItems(1).Text = ListView3.Items(ctr2).SubItems(1).Text Then
If Not RemovedItemsIndexs.Contains(ctr) Then
RemovedItemsIndexs.Add(ctr, ctr)
End If
If Not RemovedItemsIndexs.Contains(ctr2) Then
RemovedItemsIndexs.Add(ctr2, ctr2)
End If
End If
ctr2 = ctr2 + 1
Loop Until ctr2 = ListView3.Items.Count
ctr = ctr + 1
Loop Until ctr = ListView3.Items.Count
For index As Integer = 1 To RemovedItemsIndexs.Count
ListView3.Items.RemoveAt(RemovedItemsIndexs(index))
Next
我要说的最后一件事,你必须在使用前检查子项是否存在,例如如果ListView3.Items(ctr2).SubItems(1)不存在则会抛出异常