使用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();

解决方案 »

  1.   

    首先定义一个类,实现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 theColumnSorter = new ColumnSorter();
      ListView listView1 = new ListView();
      listView1.ListViewItemSorter=theColumnSorter;最后,在你的listView1的ColumnClick事件中,加入:
      theColumnSorter.CurrentColumn=e.Column;
      listView1.Sort();PS:修改ColumnSorter中的Compare方法,可以得到你自己任意的排序方式。
      

  2.   

    faygoo(阿飞) :
    我在用类似的方法时,ListView闪烁得很厉害,不知你有无同样的问题,或者你是否已经有解决的办法?