c#listview排序
来源:互联网 发布:大数据在生活中的应用 编辑:程序博客网 时间:2024/05/21 15:40
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;
}
}
如何使用这个类,很简单。新建一个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()方法。
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;
}
}
如何使用这个类,很简单。新建一个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()方法。
- ListView列排序(c#)
- c#listview排序
- C#:ListView 点击表头对数据排序
- listview排序
- ListView 排序
- ListView排序
- ListView排序
- ListView排序
- ListView排序
- listview 排序
- listview排序
- ListView排序
- Listview排序
- C#:ListView控件如何实现点击列表头进行排序
- C#:ListView控件如何实现点击列表头进行排序
- C#listview
- ListView排序问题
- ListView 排序问题
- AAC解码算法原理详解
- ipmsg on openSUSE
- Cookie文件说明及IE的Cookie文件格式
- 2011年9月11日的最后几分钟开始学习Zend freamework
- 生活2011
- c#listview排序
- JDBC事务
- Lisp.为什么使用Lisp
- ctype.h
- excel中的"插入名称"详解
- APUE学习(四):信号
- JDBC事务隔离级别
- MTK开发中编码转换问题浅析: -------------针对文件保存后打开乱码问题
- 怎样在Red Hat Enterprise Linux 5.4版本上安装GCC?