博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样对ListView的项进行排序
阅读量:6829 次
发布时间:2019-06-26

本文共 1751 字,大约阅读时间需要 5 分钟。

 

当您使用资源浏览器查看文件时,您能够随心所欲的按名称、大小、类型及改动日期不同的列对文件进行大小排序。.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

转载地址:http://osjkl.baihongyu.com/

你可能感兴趣的文章
管理微服务中的数据
查看>>
百度发布开源智能边缘计算平台OpenEdge
查看>>
如何用Uber JVM Profiler等可视化工具监控Spark应用程序?
查看>>
京东618:六年历程步步为营,京东商城的安全保卫战
查看>>
华泰证券:如何自研高效可靠的交易系统通信框架?
查看>>
网易云基于Prometheus的微服务监控实践
查看>>
深入剖析通信层和RPC调用的异步化(下)
查看>>
英特尔发布CPU新架构,突破性采用3D堆栈法
查看>>
CNCF接纳Harbor为沙箱项目
查看>>
三问百度云,ABC如何帮它跑赢马拉松?
查看>>
使用人工智能测试软件
查看>>
短视频时代,LinkedIn如何利用数据提高视频性能
查看>>
《Storm Applied》书评与作者访谈
查看>>
用深度学习解决冯-诺依曼结构内存性能瓶颈
查看>>
2016 “Better Software East/DevOps East/Agile Dev East”三个会议上的发言
查看>>
五大理由告诉你,再不看Kubernetes真的晚了
查看>>
编译安装php&&apahce以及pecl使用
查看>>
Amazon Aurora新增“回溯”特性,让DB集群可以回退到特定时间点
查看>>
pcl之FPFH配准
查看>>
微软投资混合连接,发布本地数据网关
查看>>