ListView排序并隔色显示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Forms;
using System.Drawing;namespace STools
{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);//Console.WriteLine(listviewX.SubItems[ColumnToSort].Text + "<->" + listviewY.SubItems[ColumnToSort].Text+":"+compareResult);// 根据上面的比较结果返回正确的比较结果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;}}}
}

下面是应用排序,并不同值隔色显示

 private void listView1_ColumnClick(object sender, ColumnClickEventArgs e){ListView lv = sender as ListView;// 检查点击的列是不是现在的排序列.   int column = (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn;//当前排序的序列listView1.Columns[column].Text = listView1.Columns[column].Text.Replace("", "").Replace("", "");if (e.Column == (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn){// 重新设置此列的排序方法.   if ((lv.ListViewItemSorter as ListViewColumnSorter).Order == SortOrder.Ascending){(lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Descending;listView1.Columns[e.Column].Text += "";}else{(lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Ascending;listView1.Columns[e.Column].Text += "";}}else{// 设置排序列,默认为正向排序   (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn = e.Column;(lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Ascending;listView1.Columns[e.Column].Text += "";}// 用新的排序方法对ListView排序   
            ((ListView)sender).Sort();for (int i = 0; i < listView1.Items.Count; i++){if (i != 0 && listView1.Items[i].SubItems[e.Column].Text == listView1.Items[i - 1].SubItems[e.Column].Text){listView1.Items[i].BackColor = listView1.Items[i - 1].BackColor;}else if (i == 0){listView1.Items[i].BackColor = Color.Transparent;}else{if (listView1.Items[i - 1].BackColor == Color.Transparent){listView1.Items[i].BackColor = Color.LightBlue;}else{listView1.Items[i].BackColor = Color.Transparent;}}}//listView1.Refresh();}

 

 

转载于:https://www.cnblogs.com/haorui/p/3608841.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python多进程并发+pool多线程+共享变量

一&#xff0e;多进程 当计算机运行程序时&#xff0c;就会创建包含代码和状态的进程。这些进程会通过计算机的一个或多个CPU执行。不过&#xff0c;同一时刻每个CPU只会执行一个进程&#xff0c;然后不同进程间快速切换&#xff0c;给我们一种错觉&#xff0c;感觉好像多个程…

高通骁龙855发布,5G大幕拉开,新一轮手机大战在即

来源&#xff1a;网易智能摘要&#xff1a;高通终于公布下一代移动芯片骁龙855。美国时间12月4日&#xff0c;高通在美国夏威夷召开了第三届高通骁龙技术峰会&#xff0c;在峰会首日&#xff0c;骁龙855正式发布。并非外界传言的8150&#xff0c;高通还是沿用了之前的命名规则。…

机器学习的几种方法(knn,逻辑回归,SVM,决策树,随机森林,极限随机树,集成学习,Adaboost,GBDT)

一.判别模式与生成模型基础知识 举例&#xff1a;要确定一个瓜是好瓜还是坏瓜&#xff0c;用判别模型的方法是从历史数据中学习到模型&#xff0c;然后通过提取这个瓜的特征来预测出这只瓜是好瓜的概率&#xff0c;是坏瓜的概率。 举例&#xff1a;利用生成模型是根据好瓜的特…

大端小端模式

大端小端模式是指内存中的数据存储方式。 大端模式&#xff0c;指数据的高位字节存在内存的低地址&#xff0c;数据的低位字节存在内存的高地址。 小端模式&#xff0c;指数据的高位字节存在内存的高地址&#xff0c;数据的低位字节存在内存的低地址。 如十六进制数0x12345678&…

京东物联网战略大升级|与华为合作,疯狂发布新品,“养鱼”的京东正在物联网赛道上花式秀技术...

来源&#xff1a;物联网智库12月4日下午&#xff0c;在“智联万物 新响无限”2018年京东IoT战略发布会上&#xff0c;京东发布了其IoT领域的最新战略规划&#xff0c;推出了新的品牌“京鱼座”&#xff0c;还推出一系列合作品牌与硬件产品&#xff0c;该战略不仅是对去年5月9日…

centos下apache安装

安装环境&#xff1a;centos查找可安装的包&#xff1a;yum list httpd*安装&#xff1a;yum install httpd.x86_64查看安装包的所有安装文件&#xff1a;rpm -ql httpd 配置文件&#xff1a;/etc/httpd/conf/httpd.conf日志目录&#xff1a;/etc/httpd/logs页面存放路径&…

电动车的惊世骗局

来源&#xff1a;世界科技创新论坛摘要&#xff1a;新能源是一个很好的机会&#xff0c;技术也没有瓶颈&#xff0c;如果发展对了方向&#xff0c;十年扶持一两个世界领先水平的企业是没问题的。但如果有人趁机“钻空子”&#xff0c;让有限的资源被浪费&#xff0c;怕是很难有…

语义分割中的类别不平衡的权重计算

这是5幅图&#xff0c;加上背景共5类。 可以参考这篇文章https://blog.csdn.net/u012426298/article/details/81232386 对于一个多类别图片数据库&#xff0c;每个类别都会有一个class frequency, 该类别像素数目除以数据库总像素数目, 求出所有class frequency 的median 值&…

盘点百度、阿里、腾讯、华为自动驾驶战略

来源&#xff1a;智车科技摘要&#xff1a;本文中盘点了百度、阿里、腾讯、华为四家巨头的自动驾驶事迹&#xff0c;以及从车路协同、车联网、高精度地图等方面对四家公司进行了梳理。今年阿里9 月云栖大会、华为10 月全联接大会、百度11 月世界大会、腾讯11 月合作伙伴大会可以…

N 组连续子串最大和

数组 a 中有 M 个数 &#xff0c; 将 M 个数分成 N 组 &#xff0c; 并且每组中的数据顺序和原数组中的顺序保持一致&#xff0c;求 N 组中的数据之和最大为多少&#xff1f; 向 dp 数组中赋初始值 &#xff0c;如果 M N &#xff0c;则 dp[ i ][ i ] dp[ i - 1 ][ i - 1 ] …

计算机行业2019年度投资研究手册

来源&#xff1a;乐晴智库精选摘要&#xff1a;计算机服务于各行各业&#xff0c;担当各下游需求行业的重要工具&#xff0c;在技术上游电子元器件和通信的技术变迁中&#xff0c;计算机企业结合客户需求不断进行技术和模式创新以获取源源不断的成长动力。2014-2015年在4G及移动…

scikit-learn流形学习手写数字可视化

本文参考如下链接&#xff1a; https://www.jianshu.com/p/2542e0a5bdf8 from time import time import cv2 import numpy as np import matplotlib.pyplot as plt from matplotlib import offsetbox from sklearn import (manifold, datasets, decomposition, ensemble,disc…

《Cracking the Coding Interview》——第11章:排序和搜索——题目7

2014-03-21 22:05 题目&#xff1a;给你N个盒子堆成一座塔&#xff0c;要求下面盒子的长和宽都要严格大于上面的。问最多能堆多少个盒子&#xff1f; 解法1&#xff1a;O(n^2)的动态规划解决。其实是最长递增子序列问题&#xff0c;所以也可以用O(n * log(n))的优化算法。 代码…

世界上手速最快的仿人机器人诞生在韩国!魔术师也要失业了!

来源&#xff1a;机器人创新生态虽然夏天都过去了这么久&#xff0c;但谁能想到小编竟然还能深受蚊子的骚扰~~这只蚊子真的是很强啊&#xff0c;为了消灭这些蚊子&#xff0c;小编特意进口了一款专用的“拍蚊子机器人”经过小编亲自测试&#xff0c;这款机器人拍蚊子效果非常不…

分解质因数

----------------------------------------------------------- 题目&#xff1a;编程将一个正整数分解质因数。例如&#xff1a;输入90,打印出902*3*3*5。 -------------------------------------------------------------------- while (n%i 0){} 目的是为了使质因数 i 全部…

从人工智能到物联网……这些公司如何改变农业与食品工业

来源&#xff1a;资本实验室目前&#xff0c;全球农业与食品工业产值约7.8万亿美元&#xff0c;占全球15%以上的GDP&#xff0c;并且雇佣了超过40%的人口。然而&#xff0c;农业与食品产业正面临着一些新的问题亟待解决&#xff0c;其中包括&#xff1a;消费者偏好和需求存在多…

pandas分析各国家交易情况

数据集来源&#xff1a; https://archive.ics.uci.edu/ml/datasets/Online%20Retail #coding:utf-8import pandas as pd import os import seaborn as sns import matplotlib.pyplot as pltRAW_DATA_FILE ./data/online_retail.xlsx CLN_DATA_FILE ./output/cln_online_ret…

Gartner 2019基础设施和运维十大趋势:Serverless、边缘计算、SaaS 变复杂等

来源&#xff1a;机器之心Gartner公司强调了基础设施和运维(I&O)领导者在2019年必须开始准备迎接的几大技术和趋势&#xff0c;以便支持数字化基础设施。Gartner的分析师们在Gartner IT基础设施、运维和云战略大会上介绍了研究结果。Gartner的高级研究主任罗斯•温瑟(Ross …

天池入门赛--蒸汽预测

首先查看数据 #coding:utf-8 """ Created on Wen Jan 9 2019author: fzh """ import warnings warnings.filterwarnings("ignore") import matplotlib.pyplot as plt plt.rcParams.update({figure.max_open_warning: 0}) import sea…

脑科学与AI要想融合发展,目前来说仍很困难

来源&#xff1a;人机与认知实验室摘要&#xff1a;AI要想进一步发展&#xff0c;需要从脑科学得到启发。业界普遍认为&#xff0c;AI未来的演进方向就是计算智能、感知智能和认知智能&#xff0c;在此期间&#xff0c;真正需要突破的就是让计算机理解、思考和进行自我学习&…