(VB6.0)怎样listview(2)里取出重复数据显示在listview(1),然后listview(2)里只显示取出重复外的单独数据呢?   我说的重复数据是, 不管位置不同,内容上相同的数据都看成重复数据如;  123
231
132
321
564
789     取出显示结果为123,231,132,321.因为123,231,132,321不管位置不同内容都是一样数据,所以都看成重复数据。   564,789没有任何相同重复,看成单独数据,不选取了。

解决方案 »

  1.   

    简单的实现,请引用 Microsoft Scripting Runtime 。Private Sub Command1_Click()
        
        Dim strKey      As String
        Dim v           As Variant
        Dim v2          As Variant
        Dim objItem     As ListItem
        Dim objCol      As Collection
        Dim objDict     As Scripting.Dictionary
        
        Set objDict = New Scripting.Dictionary
        
        For Each objItem In ListView1.ListItems
            
            strKey = SortString(objItem.Text)
            
            If objDict.Exists(strKey) Then
                
                objDict.Item(strKey).Add objItem.Text
                
            Else
                
                Set objCol = New Collection
                
                objCol.Add objItem.Text
                objDict.Add strKey, objCol
                
            End If
            
        Next
        
        For Each v In objDict.Items
            
            Set objCol = v
            
            If objCol.Count > 1 Then
                For Each v2 In objCol
                    ListView2.ListItems.Add , , v2
                Next
            End If
            
        Next
        
    End SubPrivate Function SortString(ByVal str As String) As String
        
        Dim i           As Long
        Dim j           As Long
        Dim lngPos      As Long
        Dim lngLength   As Long
        
        Dim strChar     As String
        Dim strTmp      As String
        Dim strCharMin  As String
        
        lngLength = Len(str)
        
        For i = 1 To lngLength - 1
            
            lngPos = i
            
            strChar = Mid$(str, i, 1)
            strCharMin = strChar
            
            For j = i + 1 To lngLength
                
                strTmp = Mid$(str, j, 1)
                
                If StrComp(strCharMin, strTmp, vbTextCompare) > 0 Then
                    
                    lngPos = j
                    strCharMin = strTmp
                    
                End If
                
            Next
            
            If lngPos <> i Then
                
                Mid$(str, lngPos, 1) = strChar
                Mid$(str, i, 1) = strCharMin
                
            End If
            
        Next
        
        SortString = str
        
    End Function