
Public Class ListViewColumnSorterClass ListViewColumnSorter
Implements IComparer
Public SortColumn As Int16
Public order As SortOrder
Private objCompare As CaseInsensitiveComparer

Sub New()Sub New()
order = SortOrder.None
objCompare = New CaseInsensitiveComparer
End Sub
Public Function Compare()Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim result As Int16
Dim listItemA As ListViewItem = TryCast(x, ListViewItem)
Dim listItemB As ListViewItem = TryCast(y, ListViewItem)
result = objCompare.Compare(listItemA.SubItems(SortColumn).Text, listItemB.SubItems(SortColumn).Text)
If order = SortOrder.Ascending Then
Return result
ElseIf order = SortOrder.Descending Then
Return -result
Else
Return 0
End If
End Function
End Class
Private lvwColumnSort As ListViewColumnSorter = Nothing

Private Sub lvwCpt_ColumnClick()Sub lvwCpt_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lvwCpt.ColumnClick
If lvwColumnSort Is Nothing Then
lvwColumnSort = New ListViewColumnSorter
Me.lvwCpt.ListViewItemSorter = lvwColumnSort
End If
If e.Column = lvwColumnSort.SortColumn Then
If lvwColumnSort.order = SortOrder.Ascending Then
lvwColumnSort.order = SortOrder.Descending
Else
lvwColumnSort.order = SortOrder.Ascending
End If
Else
lvwColumnSort.SortColumn = e.Column
lvwColumnSort.order = SortOrder.Ascending
End If
Me.lvwCpt.Sort()
End Sub对于ListView排序,ListView中的Sort方法主要调用 IComparer 这个接口,只要我们对这个接口实现代码,便可以对指定的任何一列进行 升/降 排序,上面我把它写成一个 类 ,主要你 Copy 到你的代码中稍加修改便可以完成. 不错吧!*_*
本文介绍了一种在Windows Forms应用中为ListView控件实现自定义排序的方法。通过创建一个实现了IComparer接口的ListViewColumnSorter类,可以轻松地为ListView中的任何列实现升序或降序排序。文章提供了完整的代码示例。
198

被折叠的 条评论
为什么被折叠?



