public int Compare(object x, object y) { //int compareResult; int image1, image2; ListViewItem listviewX, listviewY; // Cast the objects to be compared to ListViewItem objects .. listviewX = (ListViewItem)x; image1 = listviewX.ImageIndex; listviewY = (ListViewItem)y; image2 = listviewY.ImageIndex; if (image1 < image2) { return(-1); } else if (image1 == image2) { return(ObjectCompare.Compare(listviewX.Text, listviewY.Text)); } else { return(1); } }
/// <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) { int compareResult; ListViewItem listviewX, listviewY; // Cast the objects to be compared to ListViewItem objects .. listviewX = (ListViewItem)x; listviewY = (ListViewItem)y; if (ColumnToSort == 0) { compareResult = FirstObjectCompare.Compare(x, y); } else { // Compare the two items .. compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text); } // Calculate correct return value based on object comparison .. if (OrderOfSort == SortOrder.Ascending) { // Ascending sort is selected, return normal result of compare operation .. return(compareResult); } else if (OrderOfSort == SortOrder.Descending) { // Descending sort is selected, return negative result of compare operation .. return(-compareResult); } else { // Return '0' to indicate they are equal .. return(0); } }