示例#1
0
            /// <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
            }
示例#2
0
            /// <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);
            }
示例#3
0
 // снять пометку со всех файлов
 public static void UnCheckAllFiles(ListView lv)
 {
     foreach (ListViewItem lvi in lv.CheckedItems)
     {
         ListViewItemType it = (ListViewItemType)lvi.Tag;
         if (it.Type == "f")
         {
             lvi.Checked = false;
         }
     }
 }
示例#4
0
 // снять пометку со всех папок
 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;
             }
         }
     }
 }
示例#5
0
 // отметить все папки
 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;
             }
         }
     }
 }
示例#6
0
        // снять пометку со всех файлов пределенного типа
        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;
                    }
                }
            }
        }
示例#7
0
 // пометить все файлы определенного типа
 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;
                 }
             }
         }
     }
 }