バインドするだけで、後は何もしなくても自動で反映されるんですが、やはりカスタムクラスのバインドはひと癖あるようです。//この時点でDataGridViewが更新される。使えば再バインドなしでできるようです。時間あれば試してみたいと思います。ところが、CellFormattingイベントでは対応できない場面が出てきました。問題となるのは、スタイル変更の判定元となるセルが横スクロールしないと表示されないようなグリッドの場合です。走らないため初期段階では背景色が変わりません。列を先頭に持ってきてもいいがそうはできないので、下記のように対応しました。RowStyleChange_Disable();}結局CellFormattingイベントで処理するのをやめて、バインドしたときとソート後に手動(RowStyleChange_Disableメソッド呼び出して)で背景変更するようにしました。.Net開発(.Net)DataGridViewでカスタムクラスをバインドした状態でソートを行う。(.Net)DataGridViewでカスタムクラスをバインドした状態でソートを行う。DataGridViewで、カスタムクラス(独自クラス)のリストをバインドすると、ソートができません。ソートグリフ(列ヘッダに表示される▽△マーク)も表示されません。下記のようになカスタムクラスのリストをDataGridViewにバインドするコードがあるとします。(C#)(文字数制限のため今回はハイライトなしです。ListSortDirection.Ascending);というように、DataGridView.Sortメソッドを使ってソートを試みると、下記のような例外が発生します。コントロールをバインドしなければなりません。"じゃあ、ソートするにはどうすればいいんでしょう。いうことで、参考にさせてもらったのが、リフレクションを利用したソート(メモ)です。Generic.Comparerクラスを継承して、ソート時の比較の条件を指定してやるといいようです。カスタムクラスのどのプロパティに対してソートするかをリフレクションを使って動的に設定できるので、便利です。(参考先さんに感謝ですね)参考先sourceそのままですが、一応載せておきます。比較の対象とするプロパティの名称を取得、または設定します。}}ソートの実行時は下記のようにすればOKです。DataGridViewのデータソース(つまりカスタムクラスのリスト)にたいして、Sortメソッドの引数に上記の比較クラス(TestClass2Comparer)を渡してソートをしてもらい、DataGridViewをRefreshします。情シスで何でも屋の三流プログラマのコーディング、サーバ管理、PC生活関係のメモ書き。このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。31検索カテゴリ全体Linuxサーバがらみ.Net開発PHP開発C/C++開発JavaSQLツール思ったこととかニュースとか。メッセージを入力してください。