使用ListView.ListViewItemSorter 属性:创建一个类实现IComparer接口,如:
public class ColumnSorter : IComparer
{
public int CurrentColumn = 0;
public int Compare(object x, object y)
{
ListViewItem rowA = (ListViewItem)x;
ListViewItem rowB = (ListViewItem)y;
return String.Compare(rowA.SubItems
[CurrentColumn].Text,rowB.SubItems[CurrentColumn].Text);
}
}然后在你程序中加入下列代码:
ColumnSorter myColumnSorter = new ColumnSorter();
ListView.ListViewItemSorter = myColumnSorter;在ListView的ComlumnClick事件中,加入下列代码:myColumnSorter.CurrentColumn=e.Column;
listView1.Sort();
public class ColumnSorter : IComparer
{
public int CurrentColumn = 0;
public int Compare(object x, object y)
{
ListViewItem rowA = (ListViewItem)x;
ListViewItem rowB = (ListViewItem)y;
return String.Compare(rowA.SubItems
[CurrentColumn].Text,rowB.SubItems[CurrentColumn].Text);
}
}然后在你程序中加入下列代码:
ColumnSorter myColumnSorter = new ColumnSorter();
ListView.ListViewItemSorter = myColumnSorter;在ListView的ComlumnClick事件中,加入下列代码:myColumnSorter.CurrentColumn=e.Column;
listView1.Sort();
public class ColumnSorter : IComparer
{
public int CurrentColumn = 0;
public int Compare(object x, object y)
{
ListViewItem rowA = (ListViewItem)x;
ListViewItem rowB = (ListViewItem)y;
return String.Compare(rowA.SubItems[CurrentColumn].Text,rowB.SubItems[CurrentColumn].Text);
}
}然后在你程序中加入:
ColumnSorter theColumnSorter = new ColumnSorter();
ListView listView1 = new ListView();
listView1.ListViewItemSorter=theColumnSorter;最后,在你的listView1的ColumnClick事件中,加入:
theColumnSorter.CurrentColumn=e.Column;
listView1.Sort();PS:修改ColumnSorter中的Compare方法,可以得到你自己任意的排序方式。
我在用类似的方法时,ListView闪烁得很厉害,不知你有无同样的问题,或者你是否已经有解决的办法?