ListView如何按数字大小排序
编号:QA000600
建立日期: 1999年3月7日 最后修改日期:2000年12月10日
所属类别:
jwchc:
vb5
win98
listview控件中ITEMS名为数字型,如1,2,3,4.....45...,如何使其按数值大小排序?
回答:
ListView默认是按照文字排序,如果要按照数值排序,一个是将Sorted属性设为False,而自己编写一个排序程序做这件事。另一个办法是利用Windows API的LVM_SORTITEMS消息来指定自己的一个比较大小的函数来取代ListView默认的函数。具体的做法请参考微软的Knowledge Base的文章:“Q170884 OWTO: Sort a ListView Control by Date”。
刘卫国的意见:
在点击数字列头的事件中,首先将数字变一下格式,将列的内容变为:format(列的内容,"000000000000"),再将listview控件的索引值设为TRUE,最后将列的内容改回来val(列的内容)。
'在form上加listview1控件,view值设为3,加上下面一段程序
Private Sub Form_Load()
ListView1.ColumnHeaders.Add , , "Size"
For i = 1 To 100
ListView1.ListItems.Add , , Int(Rnd * 10000)
Next
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim i As Integer
ListView1.SortKey = ColumnHeader.Index - 1
'以下是按SIZE排序的程序
If ColumnHeader.Text = "Size" Then
For i = 1 To ListView1.ListItems.Count
ListView1.ListItems(i).Text = Format(ListView1.ListItems(i).Text, "000000000000")
Next
If ListView1.SortOrder = lvwDescending Then
ListView1.SortOrder = lvwAscending
Else
ListView1.SortOrder = lvwDescending
End If
ListView1.Sorted = True
For i = 1 To ListView1.ListItems.Count
ListView1.ListItems(i).Text = Val(ListView1.ListItems(i).Text)
Next
End If
End Sub
相关问题:
QA003555 "怎样使ListView按数字的大小排序"
此问题由李海回答。
| |
|
|
| |
|
|