using System; using System.Drawing; using System.Windows.Forms; using NaGet.Packages; using NaGet.Packages.Install; using System.IO; using System.Collections.Generic; namespace AppliStation.Util { /// /// ListViewのソートをカプセル化するためのクラス /// class ListViewItemSortComparer : System.Collections.IComparer { SortOrder order = SortOrder.Ascending; ColumnHeader column = null; /// /// コンストラクタ /// public ListViewItemSortComparer() { } /// /// ソートの方向。昇順か?降順か? /// public SortOrder Order { get { return order; } set { order = value; } } /// /// 選択しているコラムを取得・設定する。 /// nullを設定するとソートが解除される。 /// public ColumnHeader Column { get { return column; } set { column = value; if (value == null || value.Index < 0) { order = SortOrder.None; } } } /// /// 選択しているコラムのインデックスを返す。選択されていないときは-1を返す。 /// public int ColumnIndex { get { return (column != null)? column.Index : -1; } } public int Compare(object x, object y) { int columnIndex = this.ColumnIndex; int result = 0; if (columnIndex >= 0 && order != SortOrder.None) { ListViewItem itemx = (ListViewItem) x; ListViewItem itemy = (ListViewItem) y; result = string.Compare(itemx.SubItems[columnIndex].Text, itemy.SubItems[columnIndex].Text); if (order == SortOrder.Descending) { result = -result; } } return result; } } }