首页 > 编程语言 >c#之winform—listview中排序 和 ICompare接口和IComparer接口的比较

c#之winform—listview中排序 和 ICompare接口和IComparer接口的比较

时间:2023-04-11 15:44:50浏览次数:41  
标签:IComparer Compare 排序 c# object 接口 ICompare listview

要在listview中实现排序,需要用listview.Sorting属性,它接受一个枚举类型的值

list_view.Sorting = SortOrder.Ascending; // 1 为正序>

其中

    None = 0,   // 不排序

    Ascending = 1,  //升序

    Descending = 2  //降序

然后在将ListViewItemComparer这个类的实例赋给listview的ListViewItemSorter属性,实现列表排序功能

list_view.ListViewItemSorter = new ListViewItemComparer(SortOrder.Descending, e.Column); //点击那一列,e.Column就等于几

!!要注意 ListViewItemComparer这个类继承了IComparer接口,所以必须续写ICompare接口中唯一的方法Compare()

这个Compare(object x, object y)方法需要两个object类型的参数

然后返回一个int类型的值(0或者正整数或者负整数),用来代表排序结果
(注:要比较几次,系统就会自己调用Compare方法几次,不需要人工手动调用)

!!!注意!!!
不要弄混Compare(object a ,object b)和CompareTo(object x)

Compare(object a ,object b)是IComparable接口中的方法
CompareTo(object x)是ICompare接口中的方法
二者接受的参数不同,但都返回一个int类型的值,都用于排序

接口 IComparable ICompare
方法 CompareTo(object x ) Compare(object a ,object b)
参数 一个参数 两个参数
返回值 一个int类型的值 一个int类型的值
翻译为 可比较对象 比较器
习惯用法 新的“类”,要比较这个类中的成员,和Sort()搭配使用

标签:IComparer,Compare,排序,c#,object,接口,ICompare,listview
From: https://www.cnblogs.com/Amor-ztt/p/17306348.html

相关文章

  • 封装导出Excel文件
    utils/exportexcel.jsimport{parseTime}from'@/utils/format';import{Message}from'element-ui';/***导出Excel文件*@param{*}data文件数据流*@param{String}filePrefix文件前缀名*@param{String}fileSuffix文件后缀名*/exportfuncti......
  • PCIe扫盲——中断机制介绍(INTx)
    一个简单的PCI总线INTx中断实现流程,如下图所示。1.    首先,PCI设备通过INTx边带信号产生中断请求,经过中断控制器(InterruptController,PIC)后,转换为INTR信号,并直接发送至CPU;2.    CPU收到INTR信号置位后,意识到了中断请求的发生,但是此时并不知道是什么中断请求。于是通过......
  • SQLServer 客户端链接服务器到Oracle数据库 全攻略
    引言和第三方公司进行接口对接时,发现某一个模块第三方只提供一个视图,还让我们直接调用他们数据库......
  • 在EXCEL和WPS表格里实现邮件合并功能
    在EXCEL和WPS表格里实现邮件合并功能2020/3/2122:06:09 0人评论 10635次OFFICE邮件合并:在Office中,先建立两个文档:一个WORD包括所有文件共有内容的主文档(比如未填写的信封等)和一个包括变化信息的数据源EXCEL(填写的收件人、发件人、邮编等),然后使用邮件合并功能在主文档中插入......
  • CSS 实现垂直居中的5种方法
    方法1:使用绝对定位和负外边距对块级元素进行垂直居中      优点:兼容不错。缺点:必须提前知道被居中块级元素的尺寸.father{width:300px;height:300px;background-color:red;position:relative;......
  • 多进程下载nadc上的数据
    importwgetfrombs4importBeautifulSoupasbsimportrequestsimportrandomimportrequestsfromtqdmimporttqdmfromconcurrent.futuresimportThreadPoolExecutor,Future,as_completed,waitfrommultiprocessingimportcpu_countheaders=[&#......
  • vue项目中webpack编译glsl文件的配置
    1、 安装webpack-glsl-loader npminstallwebpack-glsl-loader2、修改vue.config.js配置,添加内容如下module.exports=defineConfig({configureWebpack:(config)=>{config.module.rules.push({test:/\.glsl$/,use:[......
  • leetcode 181
    超过经理收入的员工 selecte1.nameasEmployeefromEmployeee1,Employeee2wheree1.managerId=e2.idande1.salary>e2.salary selecte1.nameasEmployeefromEmployeee1leftjoinEmployeee2one1.managerId=e2.idwheree1.salary>e2.salary......
  • SketchUp曲面建模教程
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生教程适用品牌型号:华硕N550JK系统版本:Windows10 专业版软件版本:SketchUp2021大伙儿建模的时候总会遇到曲面建模,那么SketchUp如何曲面建模?是不是一定要用插件才能完成曲面呢?下面就来分享两种曲面案建模的......
  • 踩坑事件之@Autowired与@Resource引发的内存溢出
    java.lang.StackOverflowError:null(栈溢出异常)@ServicepublicclassSysUserServiceImplextendsServiceImpl<SysUserMapper,SysUser>implementsISysUserService{@AutowiredprivateAuthenticationManagerauthenticationManager;@Override......