The following code is working fine, but when it's storing numbers...

VB Code:
  1. Friend Class Form1
  2.     Inherits System.Windows.Forms.Form
  3.     Private Sub ListView1_ColumnClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
  4.         If e.Column <> sortColumn Then
  5.             sortColumn = e.Column
  6.             ListView1.Sorting = SortOrder.Ascending
  7.         Else
  8.             If ListView1.Sorting = SortOrder.Ascending Then
  9.                 ListView1.Sorting = SortOrder.Descending
  10.             Else
  11.                 ListView1.Sorting = SortOrder.Ascending
  12.             End If
  13.         End If
  14.         ListView1.Sort()
  15.         ListView1.ListViewItemSorter = New Comparer(e.Column, ListView1.Sorting)
  16.     End Sub
  17. End Class
  18. Friend Class Comparer
  19.     Implements IComparer
  20.     Private Col As Integer
  21.     Private Order As SortOrder
  22.     Public Sub New()
  23.         Col = 0
  24.         Order = SortOrder.Ascending
  25.     End Sub
  26.     Public Sub New(ByVal column As Integer, ByVal order As SortOrder)
  27.         Col = column
  28.         Me.Order = order
  29.     End Sub
  30.     Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
  31.         Dim returnVal As Integer = -1
  32.         returnVal = String.Compare(CType(x, ListViewItem).SubItems(Col).Text, CType(y, ListViewItem).SubItems(Col).Text)
  33.         If Order = SortOrder.Descending Then returnVal *= -1
  34.         Return returnVal
  35.     End Function
  36. End Class
For example it returns:

1
10
2
20

Instead of:

1
2
10
20


How to fix it?

Thanks.