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

当我按下按钮时,它给我“您的应用程序中发生了未处理的异常,InvalidArgument='975<-Listbox I tems' 的值对'index'无效。参数名称:索引

4

5 回答 5

1

我认为先复制列表可能会更容易,然后将唯一结果放回去:

Dim items(GlinkList.Items.Count - 1) As Object
GlinkList.Items.CopyTo(items, 0)
GlinkList.Items.Clear()
GlinkList.Items.AddRange(items.AsEnumerable().Distinct().ToArray())
于 2013-06-08T02:55:20.953 回答
0

试试这个(尚未测试,因为我的计算机中现在没有 Visual Studio)

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
于 2013-06-08T03:09:35.487 回答
0

我想我得到了答案!

If Not listbox1.Items.Contains("sometext") Then
     Me.listbox1.Items.Add("sometext")
End If
于 2014-12-29T11:58:55.520 回答
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
于 2015-03-08T15:52:13.843 回答
-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

现在您的第二个列表框不会有重复项

于 2015-10-07T21:07:10.133 回答