문제

열을 기준으로 C#로 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;
    }
}

이 코드는 CANCTINGSLISTVIEW를 원인으로 컴파일하지 않습니다. listViewItemserter는 유형 ICOMPARER이고 클래스 ListViewItemCorper는 ICOMPARER입니다.

서로를 명시 적으로 캐스팅하는 방법이 있습니까? 아니면 그냥 다른 방법으로 정렬합니까?

미리 감사드립니다

도움이 되었습니까?

해결책

일반 IComparer<T> 그리고 비 게 니체 IComparer 서로 컨버터블이 아닙니다.

아마도 당신의 ListViewItemComparer 비 게 릭을 구현해야합니다 IComparer 대신에?

다른 팁

나는 비교 클래스가 i 여야한다고 믿는다Comparer, not IComparer<type>. 여기에 기사가 있습니다 도움이 될 수 있습니다. SortDescriptions를 사용합니다.

노력하다

class ListViewItemComparer : IComparer

~ 아니다

class ListViewItemComparer : IComparer<ListViewItem>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top