listView点击列名排序
private int ColumnToSort;// 指定按照哪个列排序
private SortOrder OrderOfSort;// 指定排序的方式
private CaseInsensitiveComparer ObjectCompare;// 声明CaseInsensitiveComparer类对象
public void Taxis()// 构造函数
{
ColumnToSort = 0;// 默认按第一列排序
OrderOfSort = SortOrder.None;
ObjectCompare = new CaseInsensitiveComparer();// 初始化CaseInsensitiveComparer类对象
}
public int Compare(object x, object y)// 比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1
{
int CompareR;
ListViewItem listviewX, listviewY;
listviewX = (ListViewItem)x;
listviewY = (ListViewItem)y;
CompareR = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
if (OrderOfSort == SortOrder.Ascending)
{
return CompareR;
}
else if (OrderOfSort == SortOrder.Descending)
{
return -(CompareR);
}
else
return 0;
}
public int SortColumn// 获取或设置按照哪一列排序.
{
set
{
ColumnToSort = value;
return;
}
get
{
return ColumnToSort;
}
}
public SortOrder Order// 获取或设置排序方式.
{
set
{
OrderOfSort = value;
return;
}
get
{
return OrderOfSort;
}
}
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (e.Column == SortColumn)
{
if (Order == SortOrder.Ascending)// 重新设置此列的排序方法.
{
Order = SortOrder.Descending;
}
else
Order = SortOrder.Ascending;
}
else
{
SortColumn = e.Column;
Order = SortOrder.Ascending;
}
this.listView1.Sort();
}
为什么我点击列名什么都没改变啊!?求指导!
------解决方案--------------------
this.listView1.ListViewItemSorter=Compare();