投稿者 たなやん  (社会人) 投稿日時 2021/6/4 14:57:29
お返事ありがとうございます。
ヘッダーをクリックした時にSortCompareイベントでソートを行う動作を設定できる事を理解出来ました。

紹介頂いたStrCmpLogicalW APIを利用してソートを行うのが簡単そうなので、これを利用しようとしてみましたが正しい並び替えになりませんでした。
APIの呼び出し方が間違っているのでしょうか?
また降順にしたい時はAPIの呼び出しにオプション引数等が必要なのでしょうか?

[code]
Private Sub DataGridView1_SortCompare(ByVal sender As Object, ByVal e As DataGridViewSortCompareEventArgs) Handles DataGridView1.SortCompare

       DataGridView1.Sort(New LogicalStringComparer())
       e.Handled = True

End Sub

Public Class LogicalStringComparer
    Implements System.Collections.IComparer
    Implements System.Collections.Generic.IComparer(Of String)

    <System.Runtime.InteropServices.DllImport("shlwapi.dll",
        CharSet:=System.Runtime.InteropServices.CharSet.Unicode,
        ExactSpelling:=True)>
    Private Shared Function StrCmpLogicalW(x As String, y As String) As Integer
    End Function

    Public Function Compare(x As String, y As String) As Integer _
        Implements System.Collections.Generic.IComparer(Of String).Compare
        Return StrCmpLogicalW(x, y)
    End Function

    Public Function Compare(x As Object, y As Object) As Integer _
        Implements System.Collections.IComparer.Compare
        Return Me.Compare(x.ToString(), y.ToString())
    End Function
End Class

[/code]