본문 바로가기
.net

VB 정렬 기능 만들기

by 앵즌 2025. 5. 12.

ListView에서 뿌려주는 값 들을 정렬 해주기 위해서 

정렬하는 방법을 찾다가 간단한 방법을 찾았다.

 

Private Sub ListView1_ColumnClick(sender As Object, e As ColumnClickEventArgs) Handles ListView1.ColumnClick
        If e.Column = sortColumn Then
            ' 같은 컬럼이면 방향 뒤집기
            sortAscending = Not sortAscending
        Else
            ' 새로운 컬럼이면 오름차순 시작
            sortColumn = e.Column
            sortAscending = True
        End If

        ListView1.ListViewItemSorter = New ListViewItemComparer3(e.Column, sortAscending)
        ListView1.Sort()
    End Sub

(ListViewItemCoparer3은 새로운 클래스를 만든것)

 

 Public Class ListViewItemComparer3
        Implements IComparer

        Private col As Integer
        Private ascending As Boolean

        Public Sub New(column As Integer, ascending As Boolean)
            Me.col = column
            Me.ascending = ascending
        End Sub

        Public Function Compare(x As Object, y As Object) As Integer Implements IComparer.Compare
            Dim itemX As String = CType(x, ListViewItem).SubItems(col).Text
            Dim itemY As String = CType(y, ListViewItem).SubItems(col).Text

            Dim numX As Double
            Dim numY As Double
            Dim result As Integer

            If Double.TryParse(itemX, numX) AndAlso Double.TryParse(itemY, numY) Then
                ' 숫자 비교
                result = numX.CompareTo(numY)
            Else
                ' 문자열 비교
                result = String.Compare(itemX, itemY)
            End If

            ' 오름차순 / 내림차순 처리
            If ascending Then
                Return result
            Else
                Return -result
            End If
        End Function
    End Class

위는 새로운 class로 따로 빼주었음

'.net' 카테고리의 다른 글

VB.NET 기본적인 API 양식  (2) 2025.07.02
.net에서 유용하게 사용하는것들 정리  (0) 2025.01.23
.net VB 화면 띄우기  (0) 2024.12.22
IEnumerable VS IQueryable  (0) 2024.12.22
Ninject 과 Moq  (0) 2024.12.17