http://expert.csdn.net/Expert/topic/2202/2202093.xml?temp=.3307001
学到排序的方法,现今想进一步改进成我的想要的结果,哪位能帮上忙?

解决方案 »

  1.   

    使用一个标志变量,代码如下:
    public bool click=true;
    private void listView2_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
    {
    if(click)
    {
    this.listView2.Sorting=SortOrder.Ascending;
    this.listView2.Sort();
    click=false;
    }
    else
    {
    this.listView2.Sorting=SortOrder.Descending;
    this.listView2.Sort();
    click=true;
    }
    }
      

  2.   

    谢谢eyestrong! 
    我用到
    http://expert.csdn.net/Expert/topic/2202/2202093.xml?temp=.3307001
    提示的方法:
    比较类:
    public class ListViewItemComparer : IComparer 
    {
    private int col;
    private bool convert; public ListViewItemComparer(int column,bool cvt) 
    {
    col=column;
    convert=cvt;
    }
    public int Compare(object x, object y) 
    {
    if(convert)
    return String.Compare(((ListViewItem)y).SubItems[col].Text, ((ListViewItem)x).SubItems[col].Text);
    else
    return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
    }
    }应用:
    private int CurrentColumn = -1; //记录上次点击的列号
    private bool Convert = false; //记录正逆序信息private void listView_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
    {
    if(CurrentColumn == e.Column)
    {
    //相临两次点击同一列,排序顺序倒置
    Convert = !Convert;
    this.listView.ListViewItemSorter = new ListViewItemComparer(e.Column, Convert);
    }
    else
    {
    //相临两次点击不同列,记录本次点击的列号
    CurrentColumn = e.Column;
    //正排序
    Convert = false;
    this.listView.ListViewItemSorter = new ListViewItemComparer(e.Column, Convert);
    }
    //数据排序
    listView.Sort();
    }
    to eyestrong: 如何结合你的思路,才使第一列的永远排序不变?
      

  3.   

    一个ListViewItem是一个整体,像你的这种要求好像不现实:(
      

  4.   

    to gujunyan(ivy阿亮):
    如何再单独将第一列重写一次?能否详细一点?
      

  5.   

    假设是保持第0列不变,并且第0列是1,2,3,4.....这样的东东(如果不是你得先保存起来,这里简单处理)
    try:bool click = true;
    private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
    {
     if(e.Column == 0) return;
    if(click)
      this.listView1.Sorting = SortOrder.Ascending;
    else
      this.listView1.Sorting = SortOrder.Descending;
     click = !click;
     this.listView1.Sort();
    int i = 0;
    foreach(ListViewItem item in this.listView1.Items){
      item.SubItems[0].Text = (++i).ToString();
    }
    }
      

  6.   

    谢谢 FileNewExit((呵呵)) !
    结账!