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

次の問題に対して個別の方法を使用しましたが、方法を思い出せません: 2 番目の 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

これで、2 番目のリストボックスに重複がなくなります

于 2015-10-07T21:07:10.133 に答える