小弟急需在list或treeview可以让用户自己来调整内容的顺序。请高手指点(明天要交程序了)。先说声谢谢了。

解决方案 »

  1.   

    以前写的:调整MultiSelect=2时的ListBoxPrivate Sub m_Up()
        Dim I As Integer
        Dim TempStr As String
        Dim OldIdx As Integer
        
        If LstItem.SelCount = 0 Then Exit Sub
        If LstItem.Selected(0) Then Exit Sub
        
        OldIdx = LstItem.ListIndex
        If OldIdx >= 0 Then If LstItem.Selected(OldIdx) = False Then OldIdx = -1
        For I = 1 To LstItem.ListCount - 1
            If LstItem.Selected(I) Then
                TempStr = LstItem.List(I)
                LstItem.RemoveItem I
                LstItem.AddItem TempStr, I - 1
                LstItem.Selected(I - 1) = True
            End If
        Next I
        If OldIdx >= 0 Then LstItem.ListIndex = OldIdx - 1
        
    End SubPrivate Sub m_Down()
        Dim I As Integer
        Dim t As Long
        Dim TempStr As String
        Dim OldIdx As Integer
        
        If LstItem.SelCount = 0 Then Exit Sub
        If LstItem.Selected(LstItem.ListCount - 1) Then Exit Sub
        
        t = LstItem.TopIndex
        If OldIdx >= 0 Then If LstItem.Selected(OldIdx) = False Then OldIdx = -1
        For I = LstItem.ListCount - 1 - 1 To 0 Step -1
            If LstItem.Selected(I) Then
                TempStr = LstItem.List(I)
                LstItem.RemoveItem I
                LstItem.AddItem TempStr, I + 1
                LstItem.Selected(I + 1) = True
            End If
        Next I
        If OldIdx >= 0 Then LstItem.ListIndex = OldIdx + 1
        DoEvents
        LstItem.TopIndex = t
        
    End Sub