窗体中有两个listbox控件,我想按command1时listbox1里被选中的项会消失进入listbox2里,然后按command2时,listbox2中被选中的项又会消失回到listbox1中,这些都实现了。我现在想问,怎么才能使回到listbox1中的项还保持最开始的排序?

解决方案 »

  1.   

    我的想法:
    -----------------------------------------------------------------------------
    修改list.listIndex属性,使它等于转入前的属性。当然要用一个变量纪录转移前的list.listIndex 的植。
      

  2.   

    Dim temp As New Collection
    Private Sub Command1_Click()
    Set temp = Nothing
    On Error Resume Next
    For i = 0 To List1.ListCount - 1
    If List1.Selected(i) = True Then
    temp.Add i, List1.List(i)
    List2.AddItem List1.List(i)
    List1.RemoveItem i
    End If
    Next
    End SubPrivate Sub Command2_Click()
    On Error Resume Next
    For i = 0 To List2.ListCount
    If List2.Selected(i) = True Then
    List1.AddItem List2.List(i), Val(temp(List2.List(i)))
    List2.RemoveItem i
    End If
    Next
    End SubPrivate Sub Form_Load()
    List1.Clear
    List2.Clear
    For i = 1 To 100
    List1.AddItem i & i
    Next
    End Sub
      

  3.   

    哎,简单得不好说,用数组就什么问题也解决了,然后,每次消失ListBox之后,执行一下List1或List2的Refresh
      

  4.   

    '在属性窗口设置list1,list2的sorted属性为true
    Private Sub Command1_Click()
        If List1.ListIndex >= 0 Then
            List2.AddItem List1.List(List1.ListIndex)
            List1.RemoveItem List1.ListIndex
        End If
    End SubPrivate Sub Command2_Click()
        If List2.ListIndex >= 0 Then
            List1.AddItem List2.List(List2.ListIndex)
            List2.RemoveItem List2.ListIndex
        End If
    End SubPrivate Sub Form_Load()
        List1.AddItem "A"
        List1.AddItem "B"
        List1.AddItem "C"
        List1.AddItem "D"
        List1.AddItem "E"
        List1.AddItem "F"
        List1.AddItem "G"
    End Sub
    Private Sub List1_DblClick()
        Command1_Click
    End SubPrivate Sub List2_DblClick()
        Command2_Click
    End Sub
      

  5.   

    不行,我在list1里的项都是字符形的,如果用sorted属性,那些项就按拼音顺序排了,不能按我的要求前后排列了
      

  6.   

    Dim arrList() As String
    Private Sub Command1_Click()
        If List1.ListIndex >= 0 Then
            List2.AddItem List1.List(List1.ListIndex)
            List1.RemoveItem List1.ListIndex
            '两个都排序
            sortList List1
            sortList List2
        End If
    End SubPrivate Sub Command2_Click()
        If List2.ListIndex >= 0 Then
            List1.AddItem List2.List(List2.ListIndex)
            List2.RemoveItem List2.ListIndex
            '两个都排序
            sortList List1
            sortList List2
        End If
    End SubPrivate Sub Form_Load()
        List1.AddItem "A"
        List1.AddItem "B"
        List1.AddItem "C"
        List1.AddItem "D"
        List1.AddItem "E"
        List1.AddItem "F"
        List1.AddItem "G"
    End Sub
    Private Sub List1_DblClick()
        Command1_Click
    End SubPrivate Sub List2_DblClick()
        Command2_Click
    End Sub
    Private Sub sortList(sortList As ListBox)
        Dim i As Integer
        Dim iCount As Integer
        
        iCount = sortList.ListCount
        ReDim arrList(iCount)
        For i = 0 To iCount - 1
            arrList(i) = sortList.List(i)
        Next
        
        '对arrlist数组进行相应排序(比如起泡,快速等等,这不用写了吧!)
        
        sortList.Clear
        For i = 0 To iCount
            sortList.List(i) = arrList(i)
        NextEnd Sub