热情软件屋

 

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按数字的大小排序"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio