| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | using System;using System.Collections;using System.Windows.Forms;namespace Optimizer{    internal sealed class ListViewColumnSorter : IComparer    {        int _columnToSort;        SortOrder _sortOrder;        CaseInsensitiveComparer _comparer;        public ListViewColumnSorter()        {            _columnToSort = 0;            _sortOrder = SortOrder.None;            _comparer = new CaseInsensitiveComparer();        }        public int CurrentColumn        {            get { return _columnToSort; }            set { _columnToSort = value; }        }        public SortOrder SortOrder        {            get { return _sortOrder; }            set { _sortOrder = value; }        }        public int Compare(object x, object y)        {            int compareResult;            ListViewItem listViewX = (ListViewItem)x;            ListViewItem listViewY = (ListViewItem)y;            try            {                compareResult = _comparer.Compare(Convert.ToInt64(listViewX.SubItems[_columnToSort].Text), Convert.ToInt64(listViewY.SubItems[_columnToSort].Text));            }            catch            {                compareResult = _comparer.Compare(listViewX.SubItems[_columnToSort].Text, listViewY.SubItems[_columnToSort].Text);            }            if (_sortOrder == SortOrder.Ascending)            {                return compareResult;            }            else if (_sortOrder == SortOrder.Descending)            {                return -compareResult;            }            else            {                return 0;            }        }    }}
 |