/// <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 = (ListViewItem)x; ListViewItem listviewY = (ListViewItem)y; ListViewItemType it1 = (ListViewItemType)listviewX.Tag; ListViewItemType it2 = (ListViewItemType)listviewY.Tag; if (it1.Type == "f" && it2.Type == "f") { 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); // Return '0' to indicate they are equal } } return(0); // Return '0' to indicate they are equal }
/// <summary> /// Сравнение двух объектов. Этот метод унаследован от интерфейса IComparer. Он сравнивает два переданных объекта, используя сравнение без учета регистра. /// </summary> /// <param name="x">Первый объект для сравнения</param> /// <param name="y">Второй объект для сравнения</param> /// <returns>Результат сравнения. «0», если «x» равен «y», отрицательный, если «x» меньше, чем «y», и положительный, если «x» больше, чем «y»</returns> public int Compare(object x, object y) { int compareResult = 0; ListViewItem listviewX = (ListViewItem)x; ListViewItem listviewY = (ListViewItem)y; ListViewItemType itX = (ListViewItemType)listviewX.Tag; ListViewItemType itY = (ListViewItemType)listviewY.Tag; if (itX != null && itY != null) { // Для ListView в качестве файлового менеджера if (itX.Type == "f" && itY.Type == "f") { // Пропускаем переход на уровень выше compareResult = Compare(listviewX, listviewY, ref compareResult); } } else { // Для ListView, которые не являются файловым менеджером compareResult = Compare(listviewX, listviewY, ref compareResult); } // Определяем, является ли порядок сортировки по возрастанию if (_OrderOfSort == SortOrder.Ascending) { compareResult *= -1; // Инвертируем значение, возвращаемое String.Compare } return(compareResult); }
// снять пометку со всех файлов public static void UnCheckAllFiles(ListView lv) { foreach (ListViewItem lvi in lv.CheckedItems) { ListViewItemType it = (ListViewItemType)lvi.Tag; if (it.Type == "f") { lvi.Checked = false; } } }
// снять пометку со всех папок public static void UnCheckAllDirs(ListView lv) { if (lv.Items.Count > 0) { foreach (ListViewItem lvi in lv.CheckedItems) { ListViewItemType it = (ListViewItemType)lvi.Tag; if (it.Type == "d") { lvi.Checked = false; } } } }
// отметить все папки public static void CheckAllDirs(ListView lv, bool bCheck) { if (lv.Items.Count > 0) { for (int i = 0; i != lv.Items.Count; ++i) { ListViewItemType it = (ListViewItemType)lv.Items[i].Tag; if (it.Type == "d") { lv.Items[i].Checked = bCheck; } } } }
// снять пометку со всех файлов пределенного типа public static void UnCheckTypeAllFiles(ListView lv, string sType) { DirectoryInfo di = null; foreach (ListViewItem lvi in lv.CheckedItems) { ListViewItemType it = (ListViewItemType)lvi.Tag; if (it.Type == "f") { di = new DirectoryInfo(it.Value); if (di.Extension.ToLower() == "." + sType.ToLower()) { lvi.Checked = false; } } } }
// пометить все файлы определенного типа public static void CheckTypeAllFiles(ListView lv, string sType, bool bCheck) { if (lv.Items.Count > 0) { DirectoryInfo di = null; for (int i = 0; i != lv.Items.Count; ++i) { ListViewItemType it = (ListViewItemType)lv.Items[i].Tag; if (it.Type == "f") { di = new DirectoryInfo(it.Value); if (di.Extension.ToLower() == "." + sType.ToLower()) { lv.Items[i].Checked = bCheck; } } } } }