- 題名: DataGridViewのセルスタイルを変更
- 日時: 2010/05/12 13:15:46
- ID: 26808
- この記事の返信元:
- (なし)
- この記事への返信:
- [26809] Re[1]: DataGridViewのセルスタイルを変更2010/05/12 15:27:25
- ツリーを表示
■No26809に返信(くらさんの記事)
> ためしてみました
>
> FormにDataGridViewとColorDialogだけ
> プロパティとか全てデフォルト
>
> DataGridViewに列を2つ追加
> 2つめのNameを「COLOR」にして
>
> CellEnterにコード貼り付けて実行
>
> 色変わってますね
> ただしセルが選択された状態だと選択色になってるので
> 他のセルを選択すれば確認できました
>
>
返信ありがとうございます。
何もスタイルを設定していない列で私も試しましたが、
選択した列全ての色が変わってしまいました。
くらさんは選択したセルだけが変わっているんですよね?
何が違うのでしょうか?
私が実現して欲しい列は相変わらず色が変わってくれません。
もう少し情報を補足しますので、試していただければ幸いです。
DataGridViewの「COLOR」列は、選択した状態でも色がわかるように
SelectionBackColorプロパティをTransparentに設定しています。
色の初期設定をCellFormattingイベントで行っています。
Dim dgv As DataGridView = CType(sender, DataGridView)
'セルの列を確認
If dgv.Columns(e.ColumnIndex).Name = "COLOR" Then
Dim objColorCvr As New ColorConverter
'COLORVALUE 列のセルの値によって背景色を決定する
e.CellStyle.BackColor = objColorCvr.ConvertFromString(CStr(dgv("COLORVALUE", e.RowIndex).Value))
objColorCvr = Nothing
End If
以上です。よろしくお願いします。
返信ありがとうございます。
> あとOption Strict Onにしましょう
すみません。久しぶりのプログラミングなので、
そのあたりの設定をすっかり忘れていました。
> 1.列ではなくセルのみ背景色を変更したい?
最初で述べたように、セルの背景色を変更したいのです。
紛らわしい言い方になってしまったようですみません。
私が最初に設定した
dgv.Columns(e.ColumnIndex).DefaultCellStyle.BackColor
では、そもそもセルの背景色を変更するものではなかったのですね…。
くらさんに教えていただいた方法にプラスして、セルが選択されたときに表示される背景色も設定してみました。
'--- セルが選択されたときの背景色 ---
dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.SelectionBackColor = colordialog.Color
'--- セルの背景色 ---
dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = colordialog.Color
セルの色が変更できました!!
次にColorDialogを表示時にセルの背景色を初期選択するように
dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor
にて色を取得しようとしましたが、値は入っていませんでした。
(一度でも選択すると入っているのですが…)
そこで、CellFormattingイベントでの色の設定を
次のように変更しました。
dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.BackColor = CType(objColorCvr.ConvertFromString(CStr(dgv("COLORVALUE", e.RowIndex).Value)), Color)
ColorDialogの初期値を設定することができました。
このやり方がベストなのかは不安ではありますが、
一応実現したい動作は確認することができました。
ここまでお付き合いいただいた くらさん、本当にありがとうございました。
分類:[.NET]
現在、VS2008のVB.NETで開発を行っております。 DataGridViewのセルの背景色を変更する処理で行き詰っています。 行いたいことは次の処理です。 1、DBに登録されているCOLORデータをセルの背景色として初期表示する。 2、セルをクリックしたらColorDialogにて色を選択し、 セルの背景色を選択した色に変更する。 こちらのサイトで紹介されていた 【DataGridViewのセルの値によってセルスタイルを変更する】を参考にし、 セルの背景色を初期表示することはできたのですが、 CellEnterイベントにてColorDialogで選択した値を次のように設定しましたが、 色は変わりませんでした。 Dim dgv As DataGridView = CType(sender, DataGridView) If dgv.Columns(e.ColumnIndex).Name = "COLOR" Then If ColorDialog.ShowDialog() = DialogResult.OK Then dgv.Columns(e.ColumnIndex).DefaultCellStyle.BackColor = ColorDialog.Color End If End If 色を設定するプロパティが間違っているのでしょうか? わかる方がいましたら、よろしくお願いします。