Beispiel #1
0
		private void lvwColumnSorter_CompareItems(object sender, ListViewColumnSorterCompareEventArgs e)
		{
            var comparer = listViewResults.Columns[e.Column].Tag as IComparer<SearchFileInfo>;
            if (comparer == null)
                return;

            e.CompareResult = comparer.Compare((SearchFileInfo)e.ItemX.Tag, (SearchFileInfo)e.ItemY.Tag);
		}
		/// <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;

			// Compare the two items
			if (CompareItems == null)
			{
				compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
			}
			else
			{
				ListViewColumnSorterCompareEventArgs e = new ListViewColumnSorterCompareEventArgs();
				e.ItemX = listviewX;
				e.ItemY = listviewY;
				e.Column = ColumnToSort;
				CompareItems(this, e);
				compareResult = e.CompareResult;
			}

			// 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;
			}
		}
Beispiel #3
0
 private void lvwColumnSorter_CompareItems(object sender, ListViewColumnSorterCompareEventArgs e)
 {
     if (e.Column != 2)
     {
         e.CompareResult = string.Compare(e.ItemX.SubItems[e.Column].Text, e.ItemY.SubItems[e.Column].Text, true);
     }
     else
     {
         SearchFileInfo infoX = (SearchFileInfo)e.ItemX.Tag;
         SearchFileInfo infoY = (SearchFileInfo)e.ItemY.Tag;
         e.CompareResult = DateTime.Compare(infoX.LastWriteTime, infoY.LastWriteTime);
     }
 }