//==================================================== //Клик по столбцу - сортировка //==================================================== 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(); }
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++; } }