보통 listview는 자체적으로 sort를 통하여 none과 오룸, 내림순으로 정렬할 수 있다.
하지만 sort에 none이 아닌 다른설정을 주게된다면.. 사용자 임의로 리스트 재정렬(?)을 할 수 없다.
즉, 값이 바뀔때마다 계속 listview는 아이템을 sort해준다.
필요에따라 위치를 변경 할 수 있게끔 자동 sort를 대체할만한 메서드를 만들어보았다.
Public Sub ListViewSort(ByRef lv As ListView, ByVal col As Integer, ByVal AceDec As Boolean)
Dim lvTempItem As ListViewItem
Dim i As Integer
If AceDec Then
For i = 0 To lv.Items.Count - 2
If CStr(lv.Items(i).SubItems(col).Text) > CStr(lv.Items(i + 1).SubItems(col).Text) Then
lvTempItem = lv.Items(i)
lv.Items(i).Remove()
lv.Items.Insert((i + 1), lvTempItem)
i = -1
End If
Next i
Else
For i = 0 To lv.Items.Count - 2
If CStr(lv.Items(i).SubItems(col).Text) < CStr(lv.Items(i + 1).SubItems(col).Text) Then
lvTempItem = lv.Items(i)
lv.Items(i).Remove()
lv.Items.Insert((i + 1), lvTempItem)
i = -1
End If
Next i
End If
End Sub
사용법은 아래와 같다.
ListViewSort(byref 정렬할listview,byval 정렬을 기준할 칼럼번호,byval 1은 오름차순, 그외 내림차순)
그후 반드시 해당 리스트뷰를 refresh해주는것을 추천한다,.