【C#】DataGridView 列にボタンを配置し、文字と背景色を設定する方法

C#

列にボタンを配置し、文字を表示する

DataGridViewの列にボタンを配置し、文字を入れる。これが私的には設定があまり感覚的ではない。

列の編集で、プロパティから

ColumnType : DataGridViewButtonColumn
Text              : 削除
とすれば、ボタンに「削除」という文字が出てくるように思われる。
その結果がこちら。
ボタンに何も文字が表示されていない様子の画像イメージ
なぜかボタンには何も文字が入っていないのだ。

それを解決するには、こちらの設定が必要。

ボタンに文字が表示するためのプロパティの画像イメージ

UserColumnTextForButtonValue  : True
とする必要があったのだ。これを設定すると
ボタンに文字が表示された画像イメージ
このようにボタンに文字が表示されるようになる。

文字色・背景色を設定する

文字色・背景色の設定もあまり感覚的ではない。
列の編集のDefaultCellStyleプロパティで

文字色・背景色設定

このように設定したとする。こんなボタンのイメージ → 削除
その結果がこちら。

ボタンの色が設定した通りになっていない画像イメージ

まさかの、セルのボタン以外のところだけ背景色の設定。ボタンに関しては何の設定も取り合ってくれていない。
あくまで、セルに対する様式なので、セルの上に配置されたボタンの設定ではないらしい。

ボタン自体の文字色・背景色を設定するには、以下のいずれかが必要だった。

FlatStyleをFlatにした画像イメージ

FlatStleをPopUpにした画像イメージ

FlatStyleを[Flat]または[PopUp]にする必要があったのだ。
これを設定すると、以下のようになる。

FlatStyle : Flat

FlatStyleがflatの時のボタンの画像イメージ

(まさにフラットなので、ボタンだと気づきにくいかもしれない。)

FlatStyle : PopUp

FlatStyleがpopUpの時のボタンの画像イメージ

少し立体的な視覚効果があるため、ボタンだと分かりやすい。

まとめ

ボタンに文字を表示させるには、以下のプロパティ設定が必要

ColumnType          : DataGridViewButtonColumn
Text                       : (任意の文字)
UserColumnTextForButtonValue  : True

また、ボタンの文字色・背景色を変更するには、以下のプロパティ設定が必要

DefaultCellStyle  ForeColor   :(任意の設定)
DefaultCellStyle  BackColor  :(任意の設定)
FlatStyle                                 : Flat または PopUp

ちなみに、デフォルト(FlatStyle : Standard)の角が取れたボタンの形で背景色を設定することできない。プロパティをいじるだけでは不可能で、カスタム描画するしかないようだ。

コメント

タイトルとURLをコピーしました