怎样对ListView的项进行排序

怎样对ListView的项进行排序

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119001.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac版idea2021激活码【在线注册码/序列号/破解码】

    mac版idea2021激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    39
  • windows elk搭建_windows搭建ftp系统

    windows elk搭建_windows搭建ftp系统前提条件,已有如下红色线中安装包:资源路径:https://download.csdn.net/download/lijiaheng525/10789382(无下载的积分的留言,可以私下发你)第一步:下载nodejs并安装,然后在安装的目录下执行如下命令,安装grunt(head插件需要用到grunt命令):第二步:切换到head插件的解压目录,安装pathomj…

    2022年10月8日
    0
  • 配置windows怎么关闭计算机,准备配置WINDOWS,请勿关闭计算机。

    配置windows怎么关闭计算机,准备配置WINDOWS,请勿关闭计算机。图片发自简书App早上,想着在台式计算机机上面进行修改些文字,但是,开机后屏幕上一直就是打开电脑后的那一行字:准备配置WINDOWS,请勿关闭计算机。一直那样子。弄得,弄得我没有办法进入机内去修改了。这样,过于依赖的机器之后,有的时候也是一种很不好的事情。回想原来,笔墨时代,就会简单。过去时代,人们生活中依赖机器的事情,并不多,虽说“工欲善其事,必先利其器”,但是所谓的“器”,那时候,不外乎也是些…

    2022年6月26日
    30
  • linux 内核态与用户态_linux内核态和用户态通信

    linux 内核态与用户态_linux内核态和用户态通信创建于2013-04-13迁移自本人的百度空间——————————–1/内核态->用户态      在kernel module中调用printk是最简单的传递信息到用户空间的方法。 2/用户态->内核态      在linux中,用户对设备的操作往往被抽象为对文件的操作。利用这一特性,可以通过注册和实现伪字符设备…

    2022年9月18日
    0
  • 超详细黑苹果安装图文教程送EFI配置合集及系统

    超详细黑苹果安装图文教程送EFI配置合集及系统一、准备工作1、两张16g的u盘其中一张安装pe系统(老毛桃等)这里自行安装2、电脑(废话)这里以小米pro笔记本做教程其余的本本大同小异3、工具包及镜像以及EFI合集(链接及下载地址在文末)二、制作镜像前的准备安装mac系统最重要的就是找到与你的电脑合适的EFI配置(文末提供下载总有你的一款配置)下载工具包如下图将…

    2022年6月12日
    220
  • 笔试面试算法经典–最长回文子串

    笔试面试算法经典–最长回文子串回文的定义正读和反读都相同的字符序列为“回文”,如“abba”、“abccba”是“回文”,“abcde”和“ababab”则不是“回文”。字符串的最长回文子串,是指一个字符串中包含的最长的回文子串。例如“1212134”的最长回文子串是“12121”。下面给出了三种求最长子串的方法。解法1(中心扩展法)时间复杂度O(n^2),空间复杂度为O(1)。中心扩展法的思路是,遍历到数组的某一个元素时,以这

    2022年6月9日
    75

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号