misc.log

日常茶飯事とお仕事と

DataGridViewのコンボボックスセル背景色を変えたい

自分用メモです。

C#で、DataGridViewの列をコンボボックス列にした場合、セルの背景色を変えても無操作時の背景色は変わらず、ドロップダウン部分(下方などに展開される選択肢表示部分)だけに色が付いてしまう問題が発生。そういうものか……とおもいつつ調べてみたら設定等で回避可能でした。詳細は下記のstackoverflowの記事に記載されています。

stackoverflow.com

1つの方法は、コンボボックス列のFlatStyleプロパティを「Flat」に設定するというもの。このプロパティはDataGridViewの設定画面から変更可能で、初期状態では「Standard」になっています。これを「Flat」に変更すると、上手くいきました。

f:id:frontline:20190822125223p:plain
DataGridView、FlatStyleプロパティ

もう1つの方法は、DataGridViewの「CellPainting」と「EditingControlShowing」イベントに独自の描画処理を対応させ、自力で背景色などを塗ってしまおうというものですね。とりあえず前者のFlatStyleが楽なので、そちらを優先で考えようと思います。