コード例 #1
0
        //====================================================
        //Клик по столбцу - сортировка
        //====================================================

        void lv_files_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            //Диски не сортируем

            if (tsl_path.Text == topLevelName)
            {
                return;
            }

            //Индекс столца по которому кликнули

            int currentColumn = e.Column;

            //Получаем текущий 'Сравнитель'

            FileSystemComparer currentComparer = (FileSystemComparer)lv_files.ListViewItemSorter;

            //Если его нет - создадим (0 столбец, возрастание)

            if (currentComparer == null)
            {
                currentComparer = new FileSystemComparer();
            }

            //Если клик по столбцу по которому выполнена сортировка - меняем направление и иконку

            if (currentColumn == currentComparer.columnIndex)
            {
                if (currentComparer.sortOrder == FileSystemComparer.SORTORDER.ASC)
                {
                    currentComparer.sortOrder = FileSystemComparer.SORTORDER.DESC;
                    lv_files.Columns[currentColumn].ImageIndex = 3;
                }
                else
                {
                    currentComparer.sortOrder = FileSystemComparer.SORTORDER.ASC;
                    lv_files.Columns[currentColumn].ImageIndex = 2;
                }
            }

            //По новому столбцу - настраиваем компарер и иконку

            else
            {
                lv_files.Columns[currentComparer.columnIndex].ImageIndex = -1;
                lv_files.Columns[currentComparer.columnIndex].TextAlign  = HorizontalAlignment.Center;
                lv_files.Columns[currentComparer.columnIndex].TextAlign  = HorizontalAlignment.Left;

                currentComparer.columnIndex = currentColumn;
                currentComparer.sortOrder   = FileSystemComparer.SORTORDER.ASC;
                lv_files.Columns[currentColumn].ImageIndex = 2;
            }

            //Сортируем

            lv_files.ListViewItemSorter = currentComparer;
            lv_files.Sort();
        }
コード例 #2
0
        private void SetColumsForFolders()
        {
            if (lv_files.Columns.Count != 0)
            {
                lv_files.Columns.Clear();
            }

            //Сортировка по умолчанию

            int sortedColumnIndex = 0;

            FileSystemComparer.SORTORDER sortOrder = FileSystemComparer.SORTORDER.ASC;

            //Получаем 'Сравнитель' для ListView читаем параметры сортировки

            FileSystemComparer currentComparer = (FileSystemComparer)lv_files.ListViewItemSorter;

            if (currentComparer != null)
            {
                sortedColumnIndex = currentComparer.columnIndex;
                sortOrder         = currentComparer.sortOrder;
            }

            //Создаём столцы, с установленной иконкой

            ColumnHeader column             = null;
            int          currentColumnIndex = 0;

            foreach (KeyValuePair <string, int> item in columnsFiles)
            {
                column       = new ColumnHeader();
                column.Text  = item.Key;
                column.Width = item.Value;

                //Иконка для столца сортированного столбца

                if (sortedColumnIndex == currentColumnIndex)
                {
                    if (sortOrder == FileSystemComparer.SORTORDER.ASC)
                    {
                        column.ImageIndex = 2;
                    }
                    else
                    {
                        column.ImageIndex = 3;
                    }
                }

                lv_files.Columns.Add(column);
                currentColumnIndex++;
            }
        }