2007年3月31日 星期六

VB.NET 裡的 ListView 自定排序

在VB.NET,或者說是 .Net Framework 2.0 裡ListView,提供了一個排序的 member function:Sort( ),但是這個sort預設的排序方法,是根據第一個subitem中的string來作排序,這麼一下來排數字的時候就相當的不便,在此,VB.NET提供了一個可以自定排序的方法,就好像C++裡的,我們會override "<" 這個 operator 一樣.

於是,我們就在專案裡新增一個class來實作IComparer這個interface:

Public Class Mysort : Implements IComparer
Function Compare(ByVal a As Object, ByVal b As Object) As Integer Implements IComparer.Compare
Dim c1 As Integer = Integer.Parse(CType(a, ListViewItem).SubItems(0).Text)
Dim c2 As Integer = Integer.Parse(CType(b, ListViewItem).SubItems(0).Text)

If (c1 > c2) Then
Return 1

End If

If (c1 < c2) Then
Return -1

Else
Return 0

End If

End Function

End Class

然後,把要排序的ListView,裡面的排序準則設成這個class的一個實體,再呼叫Sort,就會依我們方式來排序了
Dim mysort As New Mysort
Me.ListView1.ListViewItemSorter = mysort
Me.ListView1.Sort()

1 則留言:

TTKSLUB 提到...

感謝
非常有用