トップ回答者
DataGridViewの値が変更されたセルのスタイル(背景色、前景色)を変える

質問
-
開発環境はVB.NET 2008 Professional Editionで、Windows Formsアプリケーションを開発しています。
OSはWindows10 Professional(64bit版)です。
DataGridViewの値が変更されたセルを目立たせるためスタイル(背景色、前景色)を変えたいのですが、
CellFormattingイベントで値が変更されたセルを検知する簡単な方法があればご教示ください。
DataGridViewのDataSourceへはDataTableをセットしています、他のプロパティは下記としています。
・キーとなる列は値の変更不可
・キー以外の列は変更可能
・行や列の増減、移動は不可
・ソートは可能
現在はセットしたDataTableをCopyしたものを保持し、DataGridViewの行のキーとなる列
(もしくは単純連番の列を付与して使用)の値で検索して列の値を取得し比較する方法を考えていますが、
もっとシンプルな方法が無いか検討中です。
どうぞよろしくお願い致します。
回答
すべての返信
-
以下のような感じでしょうか?
DataGridViewのセルの値によってセルスタイルを変更する
https://dobon.net/vb/dotnet/datagridview/cellformatting.html★良い回答には質問者は回答済みマークを、閲覧者は投票を!
-
trapemiya様、早速の返信どうもありがとうございます。
リンク先のサンプルコードの『セルの値により、背景色を変更する』の条件を固定値との比較ではなく
セル編集前の値(正確にはDataSourceへDataTableをセットした際のセルの値になります)との比較判定を
シンプルに行えないか検討中です。
(質問内容が不明瞭で申し訳ありません)
やはり、DataSourceへDataTableをセットした際の値を別で保持し、CellFormattingイベント内で
セル毎に現在のセルの値と保持しているDataTableからセルに対応する行と列の値を取得して比較して
セルのスタイルを変更するしかないでしょうか。
もしくは、DataGridViewの行と列に対応したBoolean型二次元配列を用意し、CellValidatingで値変更を検知したら
用意していた二次元配列の要素をTrueへ変え、
CellFormattingイベント内でセルに対応する二次元配列の要素がTrueの場合はセルのスタイルを変更する方法も
考え付きました。