C#中listview实现排序 c listview 排序

【问题】:当点击列标题的时候,能够完成对该列排序,再次点击,按照该列反序排序。
【解决方法】:使用IComparer接口。
例子:1.using System;using System.Collections.Generic;using System.Text;using System.Collections;using System.Windows.Forms;namespacesortListView{ classListViewColumnSorter: IComparer{ private int ColumnToSort;//指定按照哪个列排序 private SortOrder OrderOfSort;//指定排序的方式 private CaseInsensitiveComparerObjectCompare;//声明CaseInsensitiveComparer类对象, public ListViewColumnSorter()//构造函数
C#中listview实现排序 c listview 排序
{ ColumnToSort = 0;//默认按第一列排序 OrderOfSort =SortOrder.None;//排序方式为不排序 ObjectCompare = newCaseInsensitiveComparer();//初始化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) {//因为是正序排序,所以直接返回结果 returncompareResult; } 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 = newListViewColumnSorter(); this.listView1.ListViewItemSorter =lvwColumnSorter; } private voidForm1_Load(object sender, EventArgs e) {初始化listview1. } private voidlistView1_ColumnClick(object sender, ColumnClickEventArgse) {//检查点击的列是不是现在的排序列. 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, EventArgse) { Form2 obj = new Form2(); obj.Show(); } }}

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/286702.html

更多阅读

在STEP7V5.5中如何实现数值微分?算法 数值微分画线算法

在 STEP 7 V5.5 中如何实现数值微分?【算法】描述在数学中,微分是一个函数变化率的处理。不过在实践中,通常没有数学值,而 (举例来说)只有一个随时间变化的值。这个基于 STEP 7 Basic V5.5的程序根据当前值和前一函数值(一阶导数)计算

ExtJS中FormPanel实现数据加载和提交 extjs3 formpanel

在使用使用FormPanel时我们通常需要使用它的form对象来加载数据或提交数据。FormPanel中的 form对象为Ext.form.BasicForm类型的对象,它有load和submit方法分别用于加载数据和提交数据。而这两个方法都是通过调用 Ext.form.BasicForm

C ++ 中对象或其对象指针的赋值 c语言指针赋值

C++中对象或其对象指针的赋值C++中成员函数的动态绑定:C++中要实现函数的动态绑定,必须在其基类中将函数声明为virtual且在子类中对函数加以实现。然后用一个基类指针指向某一个子类对象,这样才会在函数调用时实现动态绑定。在C++中,只

遗传算法的VB实现代码 中 matlab实现遗传算法

************************************ 随机全局取样选择 **********************************''过 程 名: Stochastic_Universal_Sampleing'参 数: BinGroup - 染色体数据' Result - 染色体的适应度数据' N - 联赛规模,没有考虑到代沟

声明:《C#中listview实现排序 c listview 排序》为网友苏陌染分享!如侵犯到您的合法权益请联系我们删除