DataGridViewのセルの値によってセルスタイルを変更する注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 ここでは、セルの値によってセルスタイル(表示するテキストの色、フォント、書式、配置など)を変更する方法を紹介します。なお、ここではセルスタイルの説明はしませんので、セルスタイルに関する知識の無い方は、まずは「DataGridViewにセルスタイルを設定する」をお読みください。 セルの値によってセルスタイルを変更するには、CellFormattingイベントを使用します。CellFormattingイベントは、セルを表示する時(または、表示する文字列を取得する時)に発生します。CellFormattingイベントハンドラでそのセルをどのようなセルスタイルにするかを決定することができます。 以下の例では、"Column1"列(整数型)セルの値が負の場合は背景色を黄色に、0の場合は背景色を赤にしています。 [VB.NET] 'CellFormattingイベントハンドラ Private Sub DataGridView1_CellFormatting(ByVal sender As Object, _ ByVal e As DataGridViewCellFormattingEventArgs) _ Handles DataGridView1.CellFormatting Dim dgv As DataGridView = CType(sender, DataGridView) 'セルの列を確認 If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _ TypeOf e.Value Is Integer Then Dim val As Integer = CInt(e.Value) 'セルの値により、背景色を変更する If val < 0 Then e.CellStyle.BackColor = Color.Yellow Else If val = 0 Then e.CellStyle.BackColor = Color.Red End If End If End Sub [C#] //CellFormattingイベントハンドラ private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { DataGridView dgv = (DataGridView)sender; //セルの列を確認 if (dgv.Columns[e.ColumnIndex].Name == "Column1" && e.Value is int) { int val = (int)e.Value; //セルの値により、背景色を変更する if (val < 0) { e.CellStyle.BackColor = Color.Yellow; } else if (val == 0) { e.CellStyle.BackColor = Color.Red; } } } 補足:CellFormattingイベントハンドラの「e.CellStyle」に空のセルスタイルやnullを設定すると、表示がおかしくなります(描画されなくなります)。上記の例では、「e.CellStyle.BackColor = Color.Empty」としないでください。 CellFormattingイベントは頻繁に発生しますので、あまり重い処理をCellFormattingイベントハンドラで行わないようにしてください。 注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|