加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# listview 点击列头排序的实例

发布时间:2020-12-15 06:11:17 所属栏目:百科 来源:网络整理
导读:实例如下: #region 自定义变量 int currentCol = -1; bool sort; #endregion//列头点击事件private void lvw_ColumnClick(object sender,ColumnClickEventArgs e) { string Asc = ((char)0x25bc).ToString().PadLeft(4,' '); string Des = ((char)0x25b2).T

实例如下:

#region 自定义变量
  int currentCol = -1;
  bool sort;
  #endregion//列头点击事件

private void lvw_ColumnClick(object sender,ColumnClickEventArgs e)
  {
   string Asc = ((char)0x25bc).ToString().PadLeft(4,' ');
   string Des = ((char)0x25b2).ToString().PadLeft(4,' ');

   if (sort == false)
   {
    sort = true;
    string oldStr = this.lvw.Columns[e.Column].Text.TrimEnd((char)0x25bc,(char)0x25b2,' ');
    this.lvw.Columns[e.Column].Text = oldStr + Des;
   }
   else if (sort == true)
   {
    sort = false;
    string oldStr = this.lvw.Columns[e.Column].Text.TrimEnd((char)0x25bc,' ');
    this.lvw.Columns[e.Column].Text = oldStr + Asc;
   }

   if(lvw.Columns[e.Column].Tag.ToString()=="n")//在设计器中把列头的tag设为"n",则表示该列按数字比较器处理,否则为文本
    lvw.ListViewItemSorter = new ListViewItemComparerNum(e.Column,sort);
   else
    lvw.ListViewItemSorter = new ListViewItemComparer(e.Column,sort);
   this.lvw.Sort();
   int rowCount = this.lvw.Items.Count;
   if (currentCol != -1)
   {
    if (e.Column != currentCol)
     this.lvw.Columns[currentCol].Text = this.lvw.Columns[currentCol].Text.TrimEnd((char)0x25bc,' ');
   }
   currentCol = e.Column;
  }//文本比较器public class ListViewItemComparer : IComparer
  {
   public bool sort_b;
   public SortOrder order = SortOrder.Ascending;

   private int col;

   public ListViewItemComparer()
   {
    col = 0;
   }

   public ListViewItemComparer(int column,bool sort)
   {
    col = column;
    sort_b = sort;
   }

   public int Compare(object x,object y)
   {
    if (sort_b)
    {
     return String.Compare(((ListViewItem)x).SubItems[col].Text,((ListViewItem)y).SubItems[col].Text);
    }
    else
    {
     return String.Compare(((ListViewItem)y).SubItems[col].Text,((ListViewItem)x).SubItems[col].Text);
    }
   }
  }  //数字比较器
  public class ListViewItemComparerNum : IComparer
  {
   public bool sort_b;
   public SortOrder order = SortOrder.Ascending;

   private int col;

   public ListViewItemComparerNum()
   {
    col = 0;
   }

   public ListViewItemComparerNum(int column,object y)
   {
    decimal d1=Convert.ToDecimal(((ListViewItem)x).SubItems[col].Text);
    decimal d2=Convert.ToDecimal(((ListViewItem)y).SubItems[col].Text);
    if (sort_b)
    {
     return decimal.Compare(d1,d2);
    }
    else
    {
     return decimal.Compare(d2,d1);
    }
   }
  }

以上这篇C# listview 点击列头排序的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读