DataGirdViewのカラムソートは文字列比較がデフォルトだ。
これを好みの比較に変更するにはDataGirdViewのSortCompareイベントを実装する。
この時注意しなければならないのは比較対象が同一文字列である場合に必ず0(一致)をSortResultに設定しなければならないことだ。
0以外の値を設定するとDataGirdView本体がindex out of rangeの例外をはく。
これを避けるためには以下のコーディングが定石だ。
1 | Private Sub _grid_SortCompare(ByVal sender As Object, |
2 | ByVal e As System.Windows.Forms.DataGridViewSortCompareEventArgs) |
3 | Handles _grid.SortCompare |
4 | e.SortResult = System.String.Compare(e.CellValue1.ToString(), e.CellValue2.ToString()) |
5 | If e.SortResult <> 0 Then |
6 | '---------- |
7 | ' 比較処理 |
8 | '---------- |
9 | End If |
10 | e.Handled = True |
11 | End Sub |