У меня есть представление списка с некоторыми столбцами listViewItems. Когда я использую метод Sort listViewItems.Sort();, он по умолчанию сортируется по тексту столбца. Это код, который я использую:
private void OnColumnClick(object sender, ColumnClickEventArgs e)
{
int sortColumn = 0; --I only want to sort if you click this column header, not others
if (e.Column == sortColumn)
{
if (listViewItems.Sorting == SortOrder.Ascending)
{
listViewItems.Sorting = SortOrder.Descending;
}
else
{
listViewItems.Sorting = SortOrder.Ascending;
}
}
listViewItems.Sort();
Однако у моих товаров есть тег, доступный по listViewItems[0].Tag;
Я хотел бы использовать этот тег для сортировки списка (в моем случае тег - это int), но я не знаю, как это сделать, и не могу найти информацию о чем-то подобном. Метод сортировки не принимает никаких параметров. Я попытался создать сортировщик столбцов, но он также ожидает столбец.
ListViewColumnSorter lvwColumnSorter;
lvwColumnSorter = new ListViewColumnSorter();
listViewItems.ListViewItemSorter = lvwColumnSorter;
lvwColumnSorter.SortColumn = ?;
Есть идеи? Заранее спасибо.





var items = ListView.Items.Cast<ListViewItem>().OrderBy(x => x.Tag).ToList();
ListView.Items.Clear();
ListView.Items.AddRange(items.ToArray());
«Свойство ListView.Items не может быть назначено — оно доступно только для чтения». И это, похоже, что-то внутреннее, я не могу изменить его на не только для чтения.
Что касается второй части, после = я получаю «ListView.ListViewItemCollection не содержит определения для OrderBy» и нет доступного метода расширения «OrderBy», принимающего первый аргумент типа ListView.ListViewItemCollection».
он будет иметь, если вы примените его как ListViewItem. посмотрите ответ.
Да, теперь с актерским составом, который работает, но не с аддранжем. Пишет: невозможно преобразовать из System.Collections.Generic.List<System.Windows.Forms.ListViewItem> в System.Windows.Forms.ListViewItem[].
просто добавьте .ToArray() посмотрите ответ.
ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Tag,listviewY.SubItems[ColumnToSort].Tag);