DOBON.NETプログラミング道掲示板

■34196 / 1階層)  DataGridView 行の背景色の設定
□投稿者/ Hongliang 大御所(554回)-(2019/03/18(Mon) 21:36:07)
  • アイコン> DataGridViewのCellFormattingイベントを使用してのサンプルを
    > 見つけて以下の通り記述をしたのですが、日付を表示している
    > 列にヒットしないようです。
    とりあえず、dgv.Columns(e.ColumnIndex).Nameとかe.ValueとかをDebug.Printしてみてどんな値が入っているか確認されてみては。
    // その日付列って文字列型だったりしませんよね?

    ところで、
    ・バインドしてるデータの特定の列に日付データが入っていて、
    ・その日付の曜日が土日である行について、
    ・その行の全てのセルの背景色を変更したい、
    という要件でしょうか?
    であれば、CellFormattingイベントでは、
    1. e.RowIndexを元にDataGridView.RowsからDataGridViewRowを取得する
    2. そのDataGridViewRowのDataBoundItemでバインドしているデータの行データを取得する
     ※バインドしているのがDataTableであれば、DataBoundItemはDataRowViewになります。
    3. その行データの日付フィールドの値を見て、条件を満たした場合e.CellStyle.BackColorを変更する
    というだけで十分なはずです。
    ただし、こうした場合に、日付フィールドが変更されうるケースでは、日付フィールドを変更した時に日付セルだけ更新される(その行の他のセルは色が変わらない)ので、DataGridViewのCellEndEditイベントあたりでDataGridViewのInvalidateRowメソッドを呼び出す必要があります。

    日付データのセルだけ背景色を変えたいなら、cb400s2000さんのお書きになっているコードで良いと思います。
    あえて言うなら、曜日の判定は
    Dim dt As DateTime = CType(e.Value, DateTime)
    If dt.DayOfWeek = DayOfWeek.Sunday Then
    のようにやる方が.NET的ではあります。
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←DataGridView 行の背景色の設定 /cb400s2000 →Re[2]: DataGridView 行の背景色の設定 /cb400s2000
 
上記関連ツリー

Nomalアイコン DataGridView 行の背景色の設定 / cb400s2000 (19/03/18(Mon) 20:12) #34195
Nomalアイコン DataGridView 行の背景色の設定 / Hongliang (19/03/18(Mon) 21:36) #34196 ←Now
  └Nomalアイコン Re[2]: DataGridView 行の背景色の設定 / cb400s2000 (19/03/20(Wed) 12:02) #34197

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -