以前写的:调整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
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