好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

实例如下:

?

#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, ( char )0x25b2, ' ' );

     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, ( char )0x25b2, ' ' );

    }

    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, bool sort)

    {

     col = column;

     sort_b = sort;

    }

 

    public int Compare( object x, 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 点击列头排序的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于C# listview 点击列头排序的实例的详细内容...

  阅读:49次