- 題名: DataGridViewのセル文字色
- 日時: 2010/07/07 11:33:40
- ID: 27040
- この記事の返信元:
- (なし)
- この記事への返信:
- [27041] Re[1]: DataGridViewのセル文字色2010/07/07 12:29:30
- ツリーを表示
■No27040に返信(イデアさんの記事) > CellFormattingイベントはあえて使わず、 今回のようなケースでは、CellFormattingイベントで動的指定した方が 都合が良いと思いますよ。 > DataSource の設定を行った後に文字色の設定を行ったのですが、 > 先頭行だけが変わってくれませんでした。 ForeColor だけを変更されているようですが、 SelectionForeColor および背景色はどのように設定していますか? > For i As Integer = 0 To .Rows.Count - 1 For Each の方が楽かと思います。 > Dim objColorCvr As New ColorConverter ループ内で毎回生成しなおす必要は無いはずです。ループ外に出しましょう。 > 'FONTCOLOR 列のセルの値によって文字色を設定 このコードだと、セルの内容によっては色変換できない可能性がありますよ。 (たとえば新規行など) > またスタイルの優先順位が関係しているのでしょうか? また、というのが何と比較しての話か見えていないのですが、 優先順位を考慮するのであれば、Style ではなく InheritedStyle を確認してみてください。 > ただ、先頭行だけというのがわかりません。 とりあえず、DataGridView を貼っただけの環境で試しましたが、 先頭行の色も設定されました。なお、objDT や dgvSample については、 下記のようにしています。 Private objDT As DataTable Private Sub Form1_Load() Handles MyBase.Load objDT = New DataTable("Table1") objDT.Columns.Add("Col1") objDT.Columns.Add("FONTCOLOR") objDT.Rows.Add("100", "Red") objDT.Rows.Add("200", "Green") objDT.Rows.Add("300", "DarkBlue") objDT.Rows.Add("400", "Orange") dgvSample.Columns.Clear() dgvSample.Columns.Add(New DataGridViewTextBoxColumn() With {.DataPropertyName = "Col1"}) dgvSample.Columns.Add(New DataGridViewTextBoxColumn() With {.Name = "FONTCOLOR", .DataPropertyName = "FONTCOLOR", .Visible = False}) With dgvSample 'イデアさんの No27040 のコード End With End Sub
返信ありがとうございます。 ■No27041に返信(魔界の仮面弁士さんの記事) > ■No27040に返信(イデアさんの記事) >>CellFormattingイベントはあえて使わず、 > 今回のようなケースでは、CellFormattingイベントで動的指定した方が > 都合が良いと思いますよ。 最初はCellFormattingイベントで記述したのですが、 スクロールをすると表示行の色がパラパラといった感じで 変わるのが見えたために使うのをやめました。 >>DataSource の設定を行った後に文字色の設定を行ったのですが、 >>先頭行だけが変わってくれませんでした。 > ForeColor だけを変更されているようですが、 > SelectionForeColor および背景色はどのように設定していますか? まさに失念していました。 今回は表示するだけの単純なもので、 行を追加、更新、削除することもなければ、選択することもなかったために その可能性を忘れていました。 >> For i As Integer = 0 To .Rows.Count - 1 > For Each の方が楽かと思います。 > >> Dim objColorCvr As New ColorConverter > ループ内で毎回生成しなおす必要は無いはずです。ループ外に出しましょう。 > >> 'FONTCOLOR 列のセルの値によって文字色を設定 > このコードだと、セルの内容によっては色変換できない可能性がありますよ。 > (たとえば新規行など) >>またスタイルの優先順位が関係しているのでしょうか? > また、というのが何と比較しての話か見えていないのですが、 > 優先順位を考慮するのであれば、Style ではなく > InheritedStyle を確認してみてください。 数々の助言ありがとうございます。 たしかにそうですね…、ソースについては変更を検討します。 魔界の仮面弁士さんの指摘どおり、SelectionForeColor の設定忘れでした。 こんな単純なミスでしたが、わざわざありがとうございます。 無事解決しました。
分類:[.NET]