I will try to sort a ListView.
Code is another common sort, and SubItem sort.
But it is have a problem.
* lvProcess is a ListView / frmMain is a Main Form
Private Sub lvProcess_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lvProcess.ColumnClick
If e.Column = 0 Then
lvProcess.ListViewItemSorter = New ListViewItemComparer(e.Column)
ElseIf e.Column = 1 Then
lvProcess.ListViewItemSorter = New ListViewItemComparer(e.Column)
End If
End Sub
Public Class ListViewItemComparer
Implements IComparer
Private col As Integer
Public Sub New()
col = 0
End Sub
Public Sub New(ByVal column As Integer)
col = column
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
If frmMain.SizeSort = 0 Then
If CType(x, ListViewItem).SubItems(col).Text.Length = CType(y, ListViewItem).SubItems(col).Text.Length Then
Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
Else
Return CType(x, ListViewItem).SubItems(col).Text.Length.CompareTo(CType(y, ListViewItem).SubItems(col).Text.Length)
End If
frmMain.SizeSort = 1
Exit Function
Else
If frmMain.lvProcess.Sorting = SortOrder.Ascending Then
frmMain.lvProcess.Sorting = SortOrder.Descending
Else
frmMain.lvProcess.Sorting = SortOrder.Ascending
End If
End Function
End Class
The source is working.
But,If I run lvProcess.ListViewItemSorter = New ListViewItemComparer(e.Column)
and
If frmMain.lvProcess.Sorting = SortOrder.Ascending Then
frmMain.lvProcess.Sorting = SortOrder.Descending
Else
frmMain.lvProcess.Sorting = SortOrder.Ascending
End If
an Dosen't work.
If frmMain.lvProcess.Sorting = SortOrder.Ascending ...
This part doesn't work.
How Can I ?