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;
- }
- }
- }
- }
|