此代码删除列表框重复项会给我一个错误

时间:2013-06-08 02:13:42

标签: vb.net

 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异常,InvalidArgument =值'975< -Listbox I tems'对'index'无效。参数名称:index

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

我认为我得到了答案!

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

答案 3 :(得分: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

答案 4 :(得分:-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

现在你的第二个列表框没有重复项