Public Class Form1
Inherits System.Windows.Forms.Form
Dim sortColumn As Integer = -1
'Region " Windows Form Designer generated code (Removed)"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ListView1.Columns.Add("IName", 200, HorizontalAlignment.Right)
Me.ListView1.Columns.Add("ICode", 50, HorizontalAlignment.Left)
Me.ListView1.Columns.Add("Rate", 50, HorizontalAlignment.Right)
Dim lvwi As ListViewItem
lvwi = NewListViewItem("Ice Cream")
lvwi.SubItems.Add("101")
lvwi.SubItems.Add("25")
Me.ListView1.Items.Add(lvwi)
lvwi = NewListViewItem("Soft Drink")
lvwi.SubItems.Add("102")
lvwi.SubItems.Add("20")
Me.ListView1.Items.Add(lvwi)
lvwi = NewListViewItem("Pizza")
lvwi.SubItems.Add("103")
lvwi.SubItems.Add("60")
Me.ListView1.Items.Add(lvwi)
lvwi = NewListViewItem("Choclate Milk Shake")
lvwi.SubItems.Add("104")
lvwi.SubItems.Add("50")
Me.ListView1.Items.Add(lvwi)
End Sub
Private Function NewListViewItem(ByVal pItemName As String) As ListViewItem
Dim llvwI As New ListViewItem(pItemName.ToString)
Return llvwI
End Function
'Nested Class to support column sorting
Class ListViewItemComparer
Implements IComparer
Private col As Integer
Private order As SortOrder
Private IsNumeric As Boolean
Public Sub New(ByVal column As Integer, ByVal order As SortOrder)
col = column
Me.order = order
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim returnVal As Integer
returnVal = [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
If order = SortOrder.Descending Then
returnVal *= -1
End If
Return returnVal
End Function
End Class
Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
If e.Column <> sortColumn Then
sortColumn = e.Column
ListView1.Sorting = SortOrder.Ascending
Else
If ListView1.Sorting = SortOrder.Ascending Then
ListView1.Sorting = SortOrder.Descending
Else
ListView1.Sorting = SortOrder.Ascending
End If
End If
ListView1.Sort()
ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, ListView1.Sorting)
End Sub
End Class