티스토리 뷰

IT/C#

[CS] 리스트 뷰 정렬 (오름차순, 내림차순)

주인장 진빼이

정렬자(Sorter)를 만들어서 다음과 같이 사용한다.
정렬자 클래스(ListViewSorter)에서 인터페이스를 상속받아 Compare 함수에 대해서 구현한다.

컬럼 번호(0부터 시작)를 정렬자 생성자(ListViewSorter)로 넘겨주어 특정 컬럼에 대해서 컬럼 인덱스로 접근하여 데이터를 비교한다.

지원하는 정렬은 다음과 같다.

  • 오름차순 (Ascending)

  • 내림차순 (Descending)

    public class ListViewSorter : IComparer
    {
      private int Column = 0;
      private SortOrder Order;
    
      public ListViewSorter() {
          Order = SortOrder.Ascending;
      }
      public ListViewSorter(int col, SortOrder order) 
      {
          Column = col;
          this.Order = order;
      }
    
      public int Compare(object x, object y) 
      {
          int result = String.Compare(((ListViewItem)y).SubItems[Column].Text, ((ListViewItem)x).SubItems[Column].Text);
          if (order == SortOrder.Descending)
              result *= -1;
          return result;
      }
    }
    private void Lview_Member_ColumnClick(object sender, ColumnClickEventArgs e)
    {
        Sorter sorter = new Sorter(e.Column);
        lview_Member.ListViewItemSorter = sorter;
        lview_Member.Sort();
    }
    
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함