ListView Sorter : ListView : GUI Windows Forms C# Examples


C# Examples » GUI Windows Forms » ListView »

 

ListView Sorter








    
using  System;
using  System.Collections;
using  System.Windows.Forms;

class  FolderHolder:  Form
{
        public  FolderHolder()
        {
                InitializeComponent();
        }

        private  void  listView1_ColumnClick(object  sender,  ColumnClickEventArgs  e)
        {
                ListViewItemComparer  sorter  =  listView1.ListViewItemSorter  as  ListViewItemComparer;

                if  (sorter  ==  null)
                {
                        sorter  =  new  ListViewItemComparer(e.Column);
                        listView1.ListViewItemSorter  =  sorter;
                }
                else
                {
                        sorter.Column  =  e.Column;
                }

                listView1.Sort();
        }

        [STAThread]
        public  static  void  Main(string[]  args)
        {
                Application.Run(new  FolderHolder());
        }

        private  void  InitializeComponent()
        {
                System.Windows.Forms.ListViewItem  listViewItem1  =  new  System.Windows.Forms.ListViewItem(new  string[]  {"1","B","A"},  -1);
                System.Windows.Forms.ListViewItem  listViewItem2  =  new  System.Windows.Forms.ListViewItem(new  string[]  {"2","A","D"},  -1);
                System.Windows.Forms.ListViewItem  listViewItem3  =  new  System.Windows.Forms.ListViewItem(new  string[]  {"4","C","B"},  -1);
                this.listView1  =  new  System.Windows.Forms.ListView();
                this.columnHeader1  =  new  System.Windows.Forms.ColumnHeader();
                this.columnHeader2  =  new  System.Windows.Forms.ColumnHeader();
                this.columnHeader3  =  new  System.Windows.Forms.ColumnHeader();
                this.SuspendLayout();
                //  
                //  listView1
                //  
                this.listView1.Columns.AddRange(new  System.Windows.Forms.ColumnHeader[]  {this.columnHeader1,this.columnHeader2,this.columnHeader3});
                this.listView1.Dock  =  System.Windows.Forms.DockStyle.Fill;
                this.listView1.GridLines  =  true;
                this.listView1.Items.AddRange(new  System.Windows.Forms.ListViewItem[]  {listViewItem1,listViewItem2,listViewItem3});
                this.listView1.Location  =  new  System.Drawing.Point(0,  0);
                this.listView1.Size  =  new  System.Drawing.Size(292,  266);
                this.listView1.View  =  System.Windows.Forms.View.Details;
                this.listView1.ColumnClick  +=  new  System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
                //  
                //  FolderHolder
                //  
                this.AutoScaleDimensions  =  new  System.Drawing.SizeF(6F,  13F);
                this.AutoScaleMode  =  System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize  =  new  System.Drawing.Size(292,  266);
                this.Controls.Add(this.listView1);
                this.ResumeLayout(false);

        }

        private  System.Windows.Forms.ListView  listView1;
        private  System.Windows.Forms.ColumnHeader  columnHeader1;
        private  System.Windows.Forms.ColumnHeader  columnHeader2;
        private  System.Windows.Forms.ColumnHeader  columnHeader3;
}

public  class  ListViewItemComparer  :  IComparer
{
        private  int  column;
        private  bool  numeric  =  false;

        public  int  Column
        {
                get  {  return  column;  }
                set  {  column  =  value;  }
        }

        public  bool  Numeric
        {
                get  {  return  numeric;  }
                set  {  numeric  =  value;  }
        }

        public  ListViewItemComparer(int  columnIndex)
        {
                Column  =  columnIndex;
        }

        public  int  Compare(object  x,  object  y)
        {
                ListViewItem  itemX  =  x  as  ListViewItem;
                ListViewItem  itemY  =  y  as  ListViewItem;

                if  (itemX  ==  null  &&  itemY  ==  null)  
                      return  0;
                else  if  (itemX  ==  null)  
                      return  -1;
                else  if  (itemY  ==  null)  
                      return  1;

                if  (itemX  ==  itemY)  return  0;

                if  (Numeric)
                {
                        decimal  itemXVal,  itemYVal;

                        if  (!Decimal.TryParse(itemX.SubItems[Column].Text,  out  itemXVal))
                        {
                                itemXVal  =  0;
                        }
                        if  (!Decimal.TryParse(itemY.SubItems[Column].Text,  out  itemYVal))
                        {
                                itemYVal  =  0;
                        }

                        return  Decimal.Compare(itemXVal,  itemYVal);
                }  else  {
                        string  itemXText  =  itemX.SubItems[Column].Text;
                        string  itemYText  =  itemY.SubItems[Column].Text;

                        return  String.Compare(itemXText,  itemYText);
                }
        }
}
    
   
  
   




HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo GUI Windows Forms
» ListView