назначение компаратора ListViewItemSorter
Вопрос
Я хочу отсортировать элемент управления ListView в С# на основе столбцов.Я создал ColumnClickEventHandler:
private void contactsListView_ColumnClick(object sender, ColumnClickEventArgs e)
{
contactsListView.ListViewItemSorter = new ListViewItemComparer(e.Column);
contactsListView.Sort();
}
Где класс ListViewItemComparer выглядит так:
class ListViewItemComparer : IComparer<ListViewItem>
{
private int col;
public ListViewItemComparer()
{
col = 0;
}
public ListViewItemComparer(int column)
{
col = column;
}
public int Compare(ListViewItem x, ListViewItem y)
{
int returnVal = -1;
returnVal = String.Compare(x.SubItems[col].Text, y.SubItems[col].Text);
return returnVal;
}
}
Этот код не скомпилируется, потому что contactListView.ListViewItemSorter имеет тип IComparer, а класс ListViewItemComparer — IComparer.
Есть ли способ явно передать одно другому?Или просто сделать сортировку по-другому?
заранее спасибо
Решение
Общий IComparer<T>
и неуниверсальные IComparer
не конвертируются друг из друга.
Может быть, ваш ListViewItemComparer
следует реализовать неуниверсальный IComparer
вместо?
Другие советы
Я считаю, что классом сравнения должен быть IComparer, not IComparer<type>
.
вот статья это может помочь, он использует SortDescriptions.
пытаться
class ListViewItemComparer : IComparer
нет
class ListViewItemComparer : IComparer<ListViewItem>
Не связан с StackOverflow