C# winform ListView实现表示点击排序

2023-05-16

自用的小工具要实现这个功能,网上找了些代码,加工一下,以下步骤,亲测可用。菜鸟可一步步跟着来,老鸟绕道啦。

1. 新建一个排序类,代码如下:

   public class ListViewItemComparer : IComparer {

        private int col;

        private SortOrder order;
        public ListViewItemComparer() {
            col = 0;
            order = SortOrder.Ascending;
        }

        public ListViewItemComparer(int column, SortOrder order) {
            col = column;
            this.order = order;
        }

        public int Compare(object x, object y) {
            int returnVal = -1;
            double a = 0, b = 0;

            try {
                if (double.TryParse(((ListViewItem)x).SubItems[col].Text, out a) && double.TryParse(((ListViewItem)y).SubItems[col].Text, out b)) {
                    returnVal = a >= b ? (a == b ? 0 : 1) : -1;
                    if (order == SortOrder.Descending) {
                        returnVal *= -1;
                    }
                } else {
                    returnVal = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
                    // Determine whether the sort order is descending.
                    if (order == SortOrder.Descending) {
                        // Invert the value returned by String.Compare.
                        returnVal *= -1;
                    }
                }
            } catch (Exception ex) {
                //do nothing
            }
            return returnVal;

        }

 2. 确保ListView控件的属性设置如下:

3. 列点击事件设定:

        private void lv_KDHistory_ColumnClick(object sender, ColumnClickEventArgs e) {

            if (lv_KDHistory.Sorting == SortOrder.Ascending) {
                lv_KDHistory.Sorting = SortOrder.Descending;
            } else {
                lv_KDHistory.Sorting = SortOrder.Ascending;
            }

            lv_KDHistory.ListViewItemSorter = new ListViewItemComparer(e.Column, lv_KDHistory.Sorting);
            lv_KDHistory.Sort();

        }

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# winform ListView实现表示点击排序 的相关文章

随机推荐

  • Python将自己的Py文件(或包)发布至pip上

    Python将自己的Py文件 xff08 或包 xff09 发布至pip上 开始只打包一个py文件第一步在Pypi和Github上拥有自己的账号第二步 有一个python库 pgzero template pyREADME mdLICENS
  • Linux下搭建Git服务器

    目录 步骤一 安装Git xff1a 步骤二 服务器端创建git用户 xff08 管理Git服务 xff09 服务器端的Git配置公钥 生成rsa证书文件 步骤三 服务器端创建Git仓库 步骤四 客户端clone服务器端git仓库 1 在客
  • java -jar启动 报错: Error: Unable to access jarfile

    原因 xff1a 找不到jar包 xff0c 路径名称不对 xff1b 解决方案 xff1a 不要自己手动拼写输入jar包路径 xff0c 直接复制路径或tab键补齐
  • 买房子问题(break,continue,return的区别)

    问题描述 xff1a 蒜头君从现在开始工作 xff0c 年薪 NN 万 他希望在蒜厂附近买一套 6060 平米的房子 xff0c 现在价格是 200200 万 假设房子价格以每年百分之 KK 增长 xff0c 并且蒜头君未来年薪不变 xff
  • RabbitMQ 多实例 广播消息

    场景 xff1a 服务A发布消息 xff0c 要求多实例部署的服务B都要同时 接收到消息 问题 xff1a 第一反应想到是利用RabbitMQ的FANOUT Exchange把消息广播到绑定此exchange的队列上 此情况下多实例服务B肯
  • wget ftp 端口错误bad port spec

    span class token function wget span ftp ftpUser ftp span class token comment 123456 64 183 6 116 31 firmware update 1597
  • Spring Cloud Gateway配置HTTPS

    文章目录 1 阿里云申请免费证书2 购买证书3 配置域名4 下载证书5 配置网关ssl6 如果出现如下错误7 此时访问网关会报如下错误 8 配置tomcat 1 阿里云申请免费证书 登陆之后 xff0c 直接在产品和服务器中搜索 证书 2
  • spring security 自定义验证

    最近做项目遇到一个棘手的问题 项目是用spring security来控制权限的 这个框架有一套他自己的验证 xff0c 现在项目的要求是除了去数据库验证之外还要调用OA系统验证用户名和密码 就是在原来的基础上多加一层验证 而且密码不是要加
  • hibernate 执行本地sql 映射到实体类

    第一种方式 xff1a 1 全部映射 String sql 61 34 select c from 表名 c 34 SQLQuery navtiveSQL 61 this getCurrentSession createSQLQuery s
  • Spring 配置文件报错: cvc-elt.1: Cannot find the declaration of element ""beans""

    今天碰到一个奇怪的问题 xff0c spring在初始化xml配置文件的时候报错 xff1a Cannot find the declaration of element 39 beans 39 spring配置文件原来是这样写的 xff1
  • POJ 1201(差分约束+最长路)

    题意 xff1a 一个整数集合Z有n个区间 xff0c 每个区间有3个值 xff0c ai xff0c bi xff0c ci代表 xff0c 在区间 ai bi 上至少有ci个整数属于集合Z xff0c ci可以在区间内任意取不重复的点
  • JDK自带MD5加密算法

    其实jdk就自带了md5加密算法 xff0c 直接调用很方便 public static String md5 String source StringBuffer sb 61 new StringBuffer 32 try Message
  • 学习Flutter后对我的影响,阿里P6年薪40万+Flutter有这么大魅力-

    把 javascript 映射到原生 UI xff0c 使用原生 UI 的能力 这是 react native weex 采用的路线 Phone Gap 让人诟病的渲染性能让开发者思考一个问题 xff1a 如果 DOM 渲染效率太低 xff
  • linux禁用nouveau安装nvidia驱动遇到的问题

    1 禁用nouveau 安装nvidia显卡驱动首先需要禁用nouveau xff0c 不然会碰到冲突的问题 xff0c 导致无法安装nvidia显卡驱动 编辑文件blacklist conf sudo vim etc modprobe d
  • Linux第三次实验---进程管理

    文章目录 一 实验目的二 实验环境 xff1a 三 实验内容与步骤PART 1 进程基本操作PART 2 进程管理PART 3 定时执行命令PART 4 守护进程 一 实验目的 1 熟悉Linux操作系统环境 xff0c 掌握Linux命令
  • 如何设定Listview表头的背景色

    1 设定Listview的OwnerDraw属性为True 2 在Listview的DrawColumnHeader的事件中添加如下代码 xff1a e Graphics FillRectangle Brushes LightBlue e
  • DevExpress DataGrid Auto Filter Row 单元格实现单击全选

    如下图 xff0c 为提高工作效率 xff0c 要求单击时可以全选里面值 xff1a 研究了半天 xff0c 没有找到合适的事件 xff0c 后来还是在一个朋友的指点下得己实现 xff0c 代码如下 xff1a lt summary gt
  • MySQL 设定定时任务

    1 打开计划事件开关 SET GLOBAL event scheduler 61 ON 2 查看计划事件是否打开 SELECT 64 64 event scheduler 3 设定计划事件 CREATE EVENT IF NOT EXIST
  • MySQL 建视图时使用Union 报错1064

    SQL语句可以正常执行 xff0c 但创建视图时报错1064 xff0c 经多方资料查找 xff0c 格式调整 xff0c 原因竟然是不能用 xff08 xff09 xff0c 即创建视时SQL语句外围不能用 xff08 xff09 xff
  • C# winform ListView实现表示点击排序

    自用的小工具要实现这个功能 xff0c 网上找了些代码 xff0c 加工一下 xff0c 以下步骤 xff0c 亲测可用 菜鸟可一步步跟着来 xff0c 老鸟绕道啦 1 新建一个排序类 xff0c 代码如下 xff1a public cla