- 題名: 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]