日期:2014-05-17  浏览次数:21030 次

listview排序问题。请问如何按第二列进行排序(默认是第一列)
public Form1()
  {
  InitializeComponent();
  listView1.ColumnClick += new ColumnClickEventHandler(button4_Click);
  listView2.ColumnClick += new ColumnClickEventHandler(button6_Click);
  }

   
  private void button1_Click(object sender, EventArgs e)
  {
  if (listView1.Sorting == SortOrder.Ascending)
  {
  listView1.Sorting = SortOrder.Descending;
  }
  else
  {
  listView1.Sorting = SortOrder.Ascending;
  }
  }


这是我用的方法,是点击button1后按第一列进行排序仅供参考。
现在我想实现点击button2之后,按第二列进行排序,请问应该怎么操作?

------解决方案--------------------
自己写一个比较器,然后传给listview1的ListViewItemSorter。

写法参考

http://msdn.microsoft.com/zh-cn/library/system.windows.forms.listview.listviewitemsorter(v=vs.80).aspx

代码示例中的类可以直接用
listview1.ListViewItemSorter = new ListViewItemComparer(x); //x表示用第几列排序
这个代码有点缺憾就是它按照字符顺序排列,比如 1 100 101 2 3 4 ...,如果你要按照 1 2 3 4 ... 100 101 ... 排序,就要修改下。