1声明

private ListViewColumnSorter lvwColumnSorter;

2窗体构造函数添加下面代码

// 创建一个ListView排序类的对象,并设置listView1的排序器
lvwColumnSorter = new ListViewColumnSorter();
this.listView1.ListViewItemSorter = lvwColumnSorter;

3.在listView1的ColumnClick事件中添加以下代码:

// 检查点击的列是不是现在的排序列.
if ( e.Column == lvwColumnSorter.SortColumn )
{// 重新设置此列的排序方法.if (lvwColumnSorter.Order == SortOrder.Ascending){lvwColumnSorter.Order = SortOrder.Descending;}else{lvwColumnSorter.Order = SortOrder.Ascending;}
}
else
{// 设置排序列,默认为正向排序lvwColumnSorter.SortColumn = e.Column;lvwColumnSorter.Order = SortOrder.Ascending;
}// 用新的排序方法对ListView排序
this.listView.Sort();

4.添加一个类,用于listview排序

using System.Collections;
using System.Windows.Forms;/// <summary>
/// 继承自IComparer
/// </summary>
public class ListViewColumnSorter : IComparer
{/// <summary>/// 指定按照哪个列排序/// </summary>private int ColumnToSort;/// <summary>/// 指定排序的方式/// </summary>private SortOrder OrderOfSort;/// <summary>/// 声明CaseInsensitiveComparer类对象,/// 参见ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemCollectionsCaseInsensitiveComparerClassTopic.htm/// </summary>private CaseInsensitiveComparer ObjectCompare;/// <summary>/// 构造函数/// </summary>public ListViewColumnSorter(){// 默认按第一列排序ColumnToSort = 0;// 排序方式为不排序OrderOfSort = SortOrder.None;// 初始化CaseInsensitiveComparer类对象ObjectCompare = new CaseInsensitiveComparer();}/// <summary>/// 重写IComparer接口./// </summary>/// <param name="x">要比较的第一个对象</param>/// <param name="y">要比较的第二个对象</param>/// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>public int Compare(object x, object y){int compareResult;ListViewItem listviewX, listviewY;// 将比较对象转换为ListViewItem对象listviewX = (ListViewItem)x;listviewY = (ListViewItem)y;// 比较compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,listviewY.SubItems[ColumnToSort].Text);// 根据上面的比较结果返回正确的比较结果if (OrderOfSort == SortOrder.Ascending){// 因为是正序排序,所以直接返回结果return compareResult;}else if (OrderOfSort == SortOrder.Descending){// 如果是反序排序,所以要取负值再返回return (-compareResult);}else{// 如果相等返回0return 0;}}/// <summary>/// 获取或设置按照哪一列排序./// </summary>public int SortColumn{set{ColumnToSort = value;}get{return ColumnToSort;}}/// <summary>/// 获取或设置排序方式./// </summary>public SortOrder Order{set{OrderOfSort = value;}get{return OrderOfSort;}}}

C# ListView排序相关推荐

  1. ListView排序并隔色显示

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  2. 当点击ListView的列头时,对ListView排序

    1.创建一个新的C#项目,窗体Form1会被默认创建. 2.向窗体添加一个ListView控件, 3.在Form1.cs中添加下面的代码: private ListViewColumnSorter l ...

  3. Delphi ListView排序

    var   m_bSort:   boolean=false;   //控制正反排序的变量       //ListView排序的回调函数,默认的是快速排序法,也可以自己在这里做算法   functi ...

  4. C# winform中listview排序

    C# winform中listview排序 本文解决方案是采用下面链接中的解决方案.十分感谢这篇文章的作者bright:http://blog.163.com/shensc@126/blog/stat ...

  5. WPF基本的 LISTVIEW 排序实现

    网上很多方法,但是内容包含太全面,代码看上去很复杂,其实其中有很多是控制UI的,此种方法一行代码自动解决排序问题,另外,wpf的listview和winform的listview细节差别还是很多的. ...

  6. android listview排序分组,Android:如何对ListView的数据进行排序?

    我有一些要从服务器中提取的JSON数据. 此数据中的字段之一是距离值. 我需要按照ListView中从最低到最高的距离对数据进行排序. 我不确定该怎么做? 任何帮助表示赞赏. 这是我获取数据的代码,不 ...

  7. android listview 点击 过滤,Android: ListView排序及过滤

    1) 排序 ListView通过适配器得到内容数据,可以对数据list先排序再提供给ListView: private List> getData() { List> list = new ...

  8. android listview排序分组,Android:如何为ListView排序数据?

    我从服务器上下载了一些 JSON数据.该数据中的一个字段是距离值.我需要按ListView中从最低到最高的距离对数据进行排序.我不知道该怎么做呢? 任何帮助赞赏. 这是我的代码,以获取数据不确定如何正 ...

  9. WPF ListView 排序

    代码如下: list为ListView组件.Score为要排序的列,也是绑定的属性. CollectionViewSource.GetDefaultView(list.ItemsSource).Sor ...

最新文章

  1. 2018AI最佳应用回顾
  2. vscode里好用的html插件_知乎口碑最好的六大PPT插件分享!用好插件,效率倍增...
  3. Qt for Android Splash启动页最简单延时关闭
  4. 斐波那契数列python递归 0、1、1、2、3_python: 递归和递推方法求斐波那契数列
  5. linux计划任务执行日志,linux中centos制定计划任务执行命令并且输出日志
  6. 关于 签名验证失败 的问题
  7. 李晨 | 无人机市场浅析
  8. amd显卡驱动目录linux,面向 Radeon、Radeon Pro、FirePro、APU、CPU、锐龙、台式机、笔记本的 AMD 驱动程序和支持...
  9. 面试Vue架构师,封装一个万能表单生成器
  10. C语言网络编程:recv函数详解
  11. java程序员面试自我介绍范文
  12. 1024,20个入行故事,浮世中见证着程序员的奋斗
  13. Java教程-Java 程序员们值得一看的好书推荐
  14. C++的一个指针占内存几个字节?
  15. 如何建立Multi-Step(多步预测)的LSTM时间序列模型(以对家庭用电预测为例)
  16. C# 关于Lambda表达式
  17. HadoopHbaseZookeeper集群
  18. 当打开报表时显示一直在取数中
  19. 选举投票制作制作一个投票链接制作步骤在线制作投票
  20. 【渝粤教育】国家开放大学2019年春季 8简明现代汉语 参考试题

热门文章

  1. android写的猜猜看小游戏
  2. 基于 2D 激光雷达和实时回环优化的 SLAM 算法
  3. 全球手机芯片产业格局
  4. PowerPoint 2007 与 PowerPoint Viewer 2007 的命令行开关
  5. By not providing “Findncnn.cmake“ in CMAKE_MODULE_PATH this project has asked CMake to find
  6. matlab用分段线性插值例题,matlab分段线性插值
  7. #if #endif作用
  8. 从CSS盒子模型说到offsetHeight、scrollHeight、clientHeight的区别
  9. oracle数据备份与还原
  10. 热啊!热啊!!热啊!!!