Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
DataGridViewで自然順ソート
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30607#CommentId84497
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2021/6/4 16:36:07
追記:
先のコードは、列の SortMode プロパティが Automatic という前提です。
> e.SortResult = StrCmpLogicalW(e.CellValue1, e.CellValue2)
Option Strict On の場合は上記を
e.SortResult = StrCmpLogicalW(e.CellValue1?.ToString(), e.CellValue2?.ToString())
にします。
> また降順にしたい時はAPIの呼び出しにオプション引数等が必要なのでしょうか?
DataGridView 側でソート方向を見繕うので、呼び方は変わらないです。
ソートモードをプログラム制御する場合は、ColumnHeaderMouseClick イベントにて、
たなやんさんが書かれたように DataGridView1.Sort(System.Collections.IComparer) を呼び出します。
この場合、IComparer.Compare メソッドの引数は DataGridViewRow 型となりますので、
やろうと思えば複数列によるソートを実装することも出来るでしょう。
複数列ソートの場合に、ソート方向を表す三角グリフを描画したい場合には、
dgv.Columns(0).HeaderCell.SortGlyphDirection = SortOrder.Ascending
dgv.Columns(1).HeaderCell.SortGlyphDirection = SortOrder.Descending
などとして個別にマークします。