level 4
东云智树
楼主
是這樣的
因為VB.net裏面字帶的排序法都是 1,11,2,21,22,3,4,5
看起清單就是不舒服
所以想要像Win7的 1,2,3,4,5,11,21,22 來給檔案清單排序
今天研究了這東西半天才搞定
原代碼是C#來的
不廢話了給你們吧。
'使用方法:
Array.Sort(填入陣列, New NaturalStringComparer())
'下面要放在最外層
<Security.SuppressUnmanagedCodeSecurity()>
Friend Module SafeNativeMethods
Public Declare Unicode Function StrCmpLogicalW Lib "shlwapi.dll" (ByVal psz1 As String, ByVal psz2 As String) As Integer
Public Class NaturalStringComparer
Implements IComparer(Of String)
Public Function Compare(ByVal a As String, ByVal b As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
Return SafeNativeMethods.StrCmpLogicalW(a, b)
End Function
End Class
End Module
以上
要是有大神能改成List(Of T)也能用的話我會很感激的
2018年01月19日 14点01分
1
因為VB.net裏面字帶的排序法都是 1,11,2,21,22,3,4,5
看起清單就是不舒服
所以想要像Win7的 1,2,3,4,5,11,21,22 來給檔案清單排序
今天研究了這東西半天才搞定
原代碼是C#來的
不廢話了給你們吧。
'使用方法:
Array.Sort(填入陣列, New NaturalStringComparer())
'下面要放在最外層
<Security.SuppressUnmanagedCodeSecurity()>
Friend Module SafeNativeMethods
Public Declare Unicode Function StrCmpLogicalW Lib "shlwapi.dll" (ByVal psz1 As String, ByVal psz2 As String) As Integer
Public Class NaturalStringComparer
Implements IComparer(Of String)
Public Function Compare(ByVal a As String, ByVal b As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
Return SafeNativeMethods.StrCmpLogicalW(a, b)
End Function
End Class
End Module
以上
要是有大神能改成List(Of T)也能用的話我會很感激的


