16,722
社区成员




Public Function Compare(ByVal x As double, ByVal y As double) As Integer Implements IComparer.Compare
if x>y then
return 1
elseif x=y then
return 0
else
return -1
end if
End Function
Public Class Form1
Private WithEvents lstview As New ListView
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With lstview.Columns
For i As Integer = 0 To 10
.Add("Column" + i.ToString)
Next
End With
For i As Integer = 0 To 2000
Dim item As ListViewItem = lstview.Items.Add("Item" + i.ToString)
For j As Integer = 1 To 10
Dim m As Integer = 1000 * Rnd()
item.SubItems.Add("SubItem" + m.ToString)
Next
Next
Me.Controls.Add(lstview)
lstview.View = View.Details
lstview.Dock = DockStyle.Fill
End Sub
Private Sub ListView_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lstview.ColumnClick
lstview.ListViewItemSorter = New ListViewItemComparer(e.Column)
lstview.Sort()
End Sub
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
Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
End Function
End Class
End Class
Public Class Form1
Private WithEvents lstview As New ListView
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With lstview.Columns
For i As Integer = 0 To 10
.Add("Column" + i.ToString)
Next
End With
For i As Integer = 0 To 2000
Dim item As ListViewItem = lstview.Items.Add("Item" + i.ToString)
For j As Integer = 1 To 10
Dim m As Integer = 1000 * Rnd()
item.SubItems.Add("SubItem" + m.ToString)
Next
Next
Me.Controls.Add(lstview)
lstview.View = View.Details
lstview.Dock = DockStyle.Fill
End Sub
Private Sub ListView_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lstview.ColumnClick
lstview.ListViewItemSorter = New ListViewItemComparer(e.Column)
lstview.Sort()
End Sub
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
Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
End Function
End Class
End Class