有一列表框控件list1,设定为能按住ctrl键多选,列表框内存放有二万条记录,
在list1的单击事件中,每当多选一项时,就添加到字符数组中存放,当选中那项多选一次(变成没选中),那样就从字符数组中去除相应的该项记录.应该怎么去实现呢???请大家帮帮忙~~~

解决方案 »

  1.   

    在VB.Net中,可以通过SelectedIndexChanged在事件中对Listbox.SelectedItems中选定项的重新枚举来处理;
    在VB6中请参照以下代码:
    Private s As String  '用于保存选项名称的变量
    Private SelectNumber As Integer  '当前选中的有效数量
    Private Sub List1_Click()
    If List1.SelCount > SelectNumber Then
        s = s + List1.List(List1.ListIndex) & ";"
        SelectNumber = SelectNumber + 1
    Else
        s = Replace(s, List1.List(List1.ListIndex) & ";", "", 1, 1, vbTextCompare)
        SelectNumber = SelectNumber - 1
    End If
    End Sub
      

  2.   

    太复杂了
    Dim arr() As StringPrivate Sub Command1_Click()
    For i = 0 To UBound(arr)
    MsgBox arr(i)
    Next
    End SubPrivate Sub Form_Load()
    For i = 0 To 100
    List1.AddItem i
    Next
    ReDim Preserve arr(0)
    List1.ListIndex = 0
    arr(0) = List1.ListIndex
    End Sub
    Private Sub List1_Click()
    Dim brr() As String
    Dim iboolen As Boolean
    Dim i, j, k As Integer
    For i = 0 To UBound(arr)
    If arr(i) = List1.ListIndex Then
    iboolen = True
    Exit For
    End If
    iboolen = False
    Next
    If iboolen = False Then
    ReDim Preserve arr(UBound(arr) + 1)
    arr(UBound(arr)) = List1.ListIndex
    Else
    If UBound(arr) < 1 Then Exit Sub
    ReDim Preserve brr(UBound(arr) - 1)
    For j = 0 To UBound(arr)
    If arr(j) <> List1.ListIndex Then
    brr(k) = arr(j)
    k = k + 1
    End If
    Next
    ReDim Preserve arr(UBound(arr) - 1)
    arr = brr
    End If
    End Sub
      

  3.   

    chillystar 的方法不错,很实用,正是我要找的,我把那结果用一数组存起来,然后遍历就实现了.
    老张 的方法呢,数组一开始实在不好操作.先谢谢两位大哥.