怎样对ListView的项进行排序

怎样对ListView的项进行排序

 

当您使用资源浏览器查看文件时,您能够随心所欲的按名称、大小、类型及改动日期不同的列对文件进行大小排序。.Net提供的ListView组件没有直接提供这样的功能,但要实现并不难。

 

ListView.Sort()方法的功能是“对列表视图的项进行排序”,可当您调用它时却什么也没有发生,原因是您没有为listView1.ListViewItemSorter指定排序器。所以,首先必须写一个排序类。

public class mySorter:IComparer

{

private Comparer comparer;

private int sortColumn;

private SortOrder sortOrder;

public mySorter()

{

sortColumn=0;

sortOrder=SortOrder.None;

comparer=Comparer.Default;

}

//指定进行排序的列

public int SortColumn

{

get {return sortColumn;}

set {sortColumn=value;}

}

//指定按升序或降序进行排序

public SortOrder SortOrder

{

get {return sortOrder;}

set {sortOrder=value;}

}

public int Compare(object x,object y)

{

int CompareResult;

ListViewItem itemX=(ListViewItem)x;

ListViewItem itemY=(ListViewItem)y;

//在这里您能够提供自己定义的排序

CompareResult=comparer.Compare(itemX.SubItems[this.sortColumn].Text,itemY.SubItems[this.sortColumn].Text);

if (this.SortOrder==SortOrder.Ascending)

return CompareResult;

else

if (this.SortOrder==SortOrder.Descending)

return (-CompareResult);

else

return 0;

}

}

怎样使用这个类,非常easy。新建一个Windows应用程序,添�ListView组件listView1并将其View属性设为Details。

//添�排序类

private mySorter sorter;

//改动窗口构造函数

public Form1()

{

InitializeComponent();

sorter=new myColumnSorter();

//为ListViewItemSorter指定排序类

this.listView1.ListViewItemSorter=sorter;

sorter.SortOrder=SortOrder.Ascending;

}

//给单击表头事件增�代码

private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)

{

if (e.Column==this.sorter.SortColumn)

{

if (this.sorter.SortOrder==SortOrder.Ascending)

this.sorter.SortOrder=SortOrder.Descending;

else

if (this.sorter.SortOrder==SortOrder.Descending)

this.sorter.SortOrder=SortOrder.Ascending;

else

return;

}

else

{

this.sorter.SortColumn=e.Column;

}

this.listView1.Sort();

}

假设您须要自己定义排序,那么您能够改动排序器的Compare()方法。 

 

转自domanager

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119001.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • uml的14种图_uml有几种图

    uml的14种图_uml有几种图目录什么是UML?为什么要用UML?UML图有哪些?UML图概览什么是类图?泛化(Generalization)实现(Realization)关联(Association)聚合(Aggregation)组合(Composition)依赖(Dependency)什么是组件图?什么是部署图?什么是对象图?什么是包图?什么是组合结构图?什么是轮廓图?什么是用例图?什么是活动图?什么是状态机图?什么是序列图?什么是通讯图?什

    2025年8月8日
    3
  • 细说SDRAM控制器

    细说SDRAM控制器SDRAM的基本概念SDRAM凭借其极高的性价比,广泛应用于高速数据存储、实时图像处理等设计当中,但是相对于SRAM、FIFO等其他存储器件,SDRAM的控制相对复杂。虽说是复杂,但也不代表没办法实现,仔细梳理一下,发现SDRAM的控制其实也没这么难。本文就SDRAM的基本概念以及其工作流程做简要介绍。SDRAM的基本信号:SDRAM的基本信号(电源以及地线在这里不讨论)可以…

    2022年7月25日
    11
  • FastJson对BigDecimal保留两位小数(valueFilter)「建议收藏」

    FastJson对BigDecimal保留两位小数(valueFilter)「建议收藏」2019独角兽企业重金招聘Python工程师标准>>>…

    2022年9月23日
    2
  • 网络地址转换(NAT)的原理与配置

    网络地址转换(NAT)的原理与配置

    2022年3月6日
    41
  • 怎么用python3画烟花?代码是什么?[通俗易懂]

    怎么用python3画烟花?代码是什么?[通俗易懂]我们可以用python做很多好玩的事情哦~包括制作动态的视频,之前小编就教大写编写过制作内容,现在给大家想到了更好玩的事情,就是编写个烟花代码出来,有兴趣的小伙伴可以看下呢~实施步骤:一、导入海龟

    2022年7月5日
    41
  • 父游标、子游标及共享游标

    游标是数据库领域较为复杂的一个概念,因为游标包含了sharedcursor和sessioncursor。两者有其不同的概念,也有不同的表现形式。共享游标的概念易于与SQL语句中定义的游标相混淆。本

    2021年12月26日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号