2013-06-08 7 views
1
Private Sub CHKDUP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHKDUP.Click 

     Dim i As Long 
     Dim j As Long 
     With GlinkList 
      For i = 0 To GlinkList.Items.Count - 1 
       For j = GlinkList.Items.Count To (i + 1) Step -1 
        If GlinkList.Items(j) = GlinkList.Items(i) Then 
         GlinkList.Items.Remove(j) 
        End If 
       Next 
      Next 
     End With 

    End Sub 

При нажатии на кнопку, она дает мне «Unhandeled исключение произошло в вашем applcation, InvalidArgument = Значение„975 < -Listbox I TEMS“не является допустимым для индекса. Имя параметра: индексЭтот код для удаления повторяющихся элементов ListBox дает мне ошибку

ответ

1

Я думаю, что это, вероятно, будет проще просто скопировать список, а затем положить уникальные результаты обратно:

Dim items(GlinkList.Items.Count - 1) As Object 
GlinkList.Items.CopyTo(items, 0) 
GlinkList.Items.Clear() 
GlinkList.Items.AddRange(items.AsEnumerable().Distinct().ToArray()) 
+0

спасибо. Он работает так хорошо! – user1785594

0

Попробуйте это (еще не тест, потому что у меня нет видео Студия на моем компьютере прямо сейчас)

While i < GlinkList.Items.Count 
    j = i + 1 
    While j < GlinkList.Items.Count 
     If GlinkList.Items(j) = GlinkList.Items(i) Then 
      GlinkList.Items.Remove(j) 
     Else 
      j += 1 
     End If 
    End While 
    i += 1 
End While 
0

Думаю, что у меня есть ответ!

If Not listbox1.Items.Contains("sometext") Then 
    Me.listbox1.Items.Add("sometext") 
End If 
+1

Можете ли вы опубликовать полный код решения? – segarci

0
Dim i, j As Long 
    For i = 0 To ListBox2.Items.Count - 1 
     For j = ListBox2.Items.Count - 1 To (i + 1) Step -1 
      If ListBox2.Items(i) = ListBox2.Items(j) Then 
       ListBox2.Items.Remove(ListBox2.Items(j)) 
      End If 
     Next 
    Next 
-1

я использовал отличный метод для следующей задачи, но не может вспомнить, как: Создание второго listbox2 и сделать первый скрытый, используйте следующий код

Dim i2 As Integer 

For i2 = 0 To ListBox1.Items.Count - 1 
    If Not ListBox2.Items.Contains(ListBox1.Items.Item(i2)) Then 
     ListBox2.Items.Add(ListBox1.Items.Item(i)) 
    End If 
Next 

Теперь ваш второй список будет не имеют дубликатов

+0

@jyanks Он не задает вопрос, он пытается ответить на один ... – BrokenBinary

Смежные вопросы