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

最新文章

  1. SQL 提高查询效率
  2. C#操作Mongodb
  3. java list 简述
  4. unix环境高级编程基础知识之第一篇
  5. 并行编程多线程之Parallel
  6. AC日记——产生数 codevs 1009 (弗洛伊德)(组合数学)
  7. 【RSYSLOG】rsyslog作为日志采集器安装配置说明
  8. Android Studio导入Project的方法
  9. Zabbix全方位告警接入-电话/微信/短信都支持
  10. 使用T4为数据库自动生成实体类
  11. iOS开发——设备篇Swift篇&判断设备类型
  12. Java面试题-Java中的锁
  13. Java虚拟机几个命令行参数说明
  14. POJ2411 Mondriaan's Dream(状态压缩)
  15. (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  16. html语义化练习易牛课堂代码
  17. Jquery 图片延迟加载技术
  18. 连接Linux服务器操作Oracle数据库
  19. 【usaco 2006 feb gold】 牛棚安排
  20. 自己写一个java的mvc框架吧(三)

热门文章

  1. hdu 4927 java求组合数(大数)
  2. hdu 1074(状态压缩dp+记录路径)
  3. 经典非原创,网页常用Javascript
  4. 静态成员变量.xml
  5. 指定URL,计算文件大小
  6. 动软Model 模板 生成可空类型字段
  7. 通知(Toast+Notification)
  8. 第一个自定义HTML网页
  9. s3c2440串口裸板驱动(使用fifo)
  10. http协议要点