首页 > 编程语言 >C#中listview实现排序

C#中listview实现排序

时间:2022-12-02 16:12:31浏览次数:37  
标签:排序 C# lvwColumnSorter private SortOrder listview OrderOfSort public

【问题】: 当点击列标题的时候,能够完成对该列排序,再次点击,按照该列反序排序。   【解决方法】: 使用 IComparer接口。   例子: 1.using System; using System.Collections.Generic; using System.Text; using System.Collections; using System.Windows.Forms; namespace sortListView {   class ListViewColumnSorter: IComparer   {           private int ColumnToSort;// 指定按照哪个列排序       private SortOrder OrderOfSort;// 指定排序的方式               private CaseInsensitiveComparer ObjectCompare;// 声明CaseInsensitiveComparer类对象,     public ListViewColumnSorter()// 构造函数     {                 ColumnToSort = 0;// 默认按第一列排序             OrderOfSort = SortOrder.None;// 排序方式为不排序               ObjectCompare = new CaseInsensitiveComparer();// 初始化CaseInsensitiveComparer类对象     }       // 重写IComparer接口.           // <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);       // 根据上面的比较结果返回正确的比较结果         if (OrderOfSort == SortOrder.Ascending)         { // 因为是正序排序,所以直接返回结果             return compareResult;         }         else if (OrderOfSort == SortOrder.Descending)         { // 如果是反序排序,所以要取负值再返回             return (-compareResult);         }         else         {             // 如果相等返回0             return 0;         }     }         /// 获取或设置按照哪一列排序.         public int SortColumn     {           set         {     ColumnToSort = value;         }         get         {             return ColumnToSort;         }     }         /// 获取或设置排序方式.       public SortOrder Order     {   set         {             OrderOfSort = value;         }         get         {             return OrderOfSort;         }     }   }} ================================ namespace sortListView {   public partial class Form1 : Form   {           public Form1()       {         InitializeComponent();                   // 创建一个ListView排序类的对象,并设置listView1的排序器         lvwColumnSorter = new ListViewColumnSorter();         this.listView1.ListViewItemSorter = lvwColumnSorter;       }     private void Form1_Load(object sender, EventArgs e)       { 初始化listview1.       }       private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)     { // 检查点击的列是不是现在的排序列.         if (e.Column == lvwColumnSorter.SortColumn)         {         // 重新设置此列的排序方法.             if (lvwColumnSorter.Order == SortOrder.Ascending)             {   lvwColumnSorter.Order = SortOrder.Descending;             }             else             {   lvwColumnSorter.Order = SortOrder.Ascending;             }         }         else         {             // 设置排序列,默认为正向排序             lvwColumnSorter.SortColumn = e.Column;             lvwColumnSorter.Order = SortOrder.Ascending;         }       // 用新的排序方法对ListView排序         this.listView1.Sort();           }     private void button1_Click(object sender, EventArgs e)     {         Form2 obj = new Form2();         obj.Show();     }   }}   转自:https://www.cnblogs.com/xxaxx/archive/2012/12/09/2810111.html

标签:排序,C#,lvwColumnSorter,private,SortOrder,listview,OrderOfSort,public
From: https://www.cnblogs.com/Jamesblog/p/16944751.html

相关文章

  • python3读写excel之openxlpy
    pipinstallopenpyxl openpyxl读写xlsx文件,不处理xls文件importopenpyxlimportlocaleimportdatetimeimporttimeimportos#读xlsx文件excel=o......
  • Canvas学习笔记(一)绘制直线
    Canvas简介HTMLCanvas,说得简单一点,就是使用JavaScript操作Canvas元素绘制各种图形的技术。使用Canvas元素绘制图形大体需要三步:获取Canvas对象;获取上下文环......
  • SoviChart数据可视化:散点图(Scatter plot)
    什么是散点图散点图也可以称为x-y图,用于展示数据的相关性和分布关系,由X轴和Y轴两个变量组成。通过因变量(Y轴数值)随自变量(X轴数值)变化的呈现数据的大致趋势,同时支持从......
  • 【JAVA】sec:authorize标签不生效的坑
    使用springboot+springsecurity+thymeleaf撸一个登录的demo,在处理sec标签的时间打死都出不来效果,网上的解决方法基本都是各种抄,各种降版本的骚操作,根本没有说到关键点。现象......
  • [AFCTF2018]Single
    题目有两种文件  打开Cipher文件内容:  查看Encode文件代码如下:#include<bits/stdc++.h>usingnamespacestd;intmain(){ freopen("Plain.txt","r",stdi......
  • Reallusion Cartoon Animator for Mac(2D动画设计制作软件)中文激活版
    ReallusionCartoonAnimatorforMac是一款2D动画设计制作软件,艺术家,插画家,漫画家和设计师能够轻松地从静态图像,照片,绘画甚至分层的PhotoshoppsD创建可动画的2D角色。Carto......
  • C# 代码生成器 & 网站架构设计
    自己写的一个web版简易C#CodeGenerator,可快速产生某个数据库中,所有表Mapping的C#3.0类。可当作网站分层开发、表单大量传递用户输入值、在内存里持久化保存值之用......
  • golang选择排序
    选择排序:每一轮迭代选择出一个最小的数,然后做一次交换元素。不用像冒泡排序那样需要交换元素那么频繁。不过也是效率比较槽糕。原理介绍:{4,7,3,10,1,8,19}第一轮迭代,从第一......
  • CS应用程序开发中的异常处理
      我们在进行网络应用程序开发时(主要是CS架构的应用程序)要面对很多异常情况的处理,这些异常中有些是服务器端主动抛出的异常,客户端要按照事先约定好的规则分类处理;有些......
  • Oracle PL/SQL之对象权限与系统权限的撤销差异
    对象权限测试:  初始状态下,user2和user3都没有user1.t1的对象权限  user1下存在t1表:  duzz$user1@orcl>select * from t1;            C1  --------......