怎样对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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • A星算法说明「建议收藏」

    A星算法说明「建议收藏」A*算法说明文章目录前言原理说明如何构造h(n)h(n)h(n)一、欧氏距离二、曼哈顿距离三、其他关于g(n)g(n)g(n)路况设置如何实现完整的流程核心代码a_star.ha_star.cppmap_matrix.hmap_matrix.cpp代码使用示例GUI程序下载链接GUI程序使用说明前言  因为最近要写一个毕业设计,有用到自动寻路的功能,因为我要在一个机器里跑算法然后控制机器人自动按照路线到达目的地,所以用Python等解释型语言或Unity等游戏引擎写这个算法都不太合适,我使用的机器要尽

  • JavaScript日期格式化及解析

    JavaScript日期格式化及解析JavaScript开发经常需要对日期进行转换,把日期转成字符串或者从字符串生成日期。JavaScript日期对象内置了简单的日期格式化方法toString()和日期解析方法Date.parse(),这两个方法有较大的局限性,不能自定义自定义日期格式化和解析的字符串格式。下面列出一些常用的日期处理JS库。

  • windows 2008文件服务器审计

    windows 2008文件服务器审计windows2008或者windows2008r2,系统做域内的文件服务器,能否做到谁删除某个共享出来的文件夹或者文件的操作审计?审计级别能做到怎么样一个程度?回答:依据您的问题您想知道Windows2008文件服务器的审计相关。依据我的经验,这个要分成两种情况:1.在远端访问,就是通过网络路径访问;2.在本地上本地访问共享文件,就是在创建的机器上访问;远端访问访问共享文件…

  • linux下修改文件内容[通俗易懂]

    linux下修改文件内容[通俗易懂]前言因为今天用了linux的复制文件功能以及修改文件内容的指令,所以刚好整理一下以备之后学习。复制文件到指定目录cp+文件名(可带路径)+目标路径(带路径)如:cpstart.sh/home/deploy/test/yirigong1就是将start.sh文件复制到指定的yirigong1目录下面。修改文件内容复制文件过去之后当然就是要修改文件的内容。catstart…

  • RUST开服教程、常用指令及心得[通俗易懂]

    RUST开服教程、常用指令及心得[通俗易懂]【前言】【开始前你需要了解的事情】①常用网址②更新与删档日期③目前国服环境【服务器硬件的选择】【标准服务器】①下载和更新服务器②制作服务器的启动脚本③选择你的服务器地图④运行服务器【模组服务器】①完成标准服务器的下载和设置②安装Oxide插件平台③下载插件④安装插件⑤调试插件⑥模组服的更新⑦在标准服中使用插件功能【在自己的电脑上运行服务端】①…

  • setContentView剖解

    setContentView剖解setContentView剖析1、setContentView的作用是将View加载到根view之上,这样当显示view时,先显示根view,然后在显示子view,以此类推,最终将所有view显示出来。2、setContentView必须要放在findviewbyid之前,因为view在加载之前是无法引用的。3、setContentView最本质的作用是为要显示的

发表回复

您的电子邮箱地址不会被公开。

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