/// <summary> /// This method is inherited from the IComparer interface. It compares the two objects passed using a case insensitive comparison. /// </summary> /// <param name="x">First object to be compared</param> /// <param name="y">Second object to be compared</param> /// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns> public int Compare(object x, object y) { // Cast the objects to be compared to ListViewItem objects ListViewItem listviewX = (ListViewItem)x; ListViewItem listviewY = (ListViewItem)y; // Compare the two items int compareResult = ListViewItemSorter.Compare(listviewX, listviewY); switch (Order) { // Calculate correct return value based on object comparison case SortOrder.Ascending: // Ascending sort is selected, return normal result of compare operation return(compareResult); case SortOrder.Descending: // Descending sort is selected, return negative result of compare operation return(-compareResult); case SortOrder.None: default: // Return '0' to indicate they are equal return(0); } }
/// <summary> /// Class constructor. Initializes various elements /// </summary> public ListViewColumnSorter(ListViewItemSorter s) { // Initialize the column to '0' SortColumn = 0; // Initialize the sort order to 'none' Order = SortOrder.None; // Initialize the CaseInsensitiveComparer object ListViewItemSorter = s; }