DataGridViewのセルの値によって表示するテキストを変更する注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 セルに表示するテキストの書式を指定する方法は、こちらで紹介しています。そこで紹介した方法は、DataGridViewCellStyleオブジェクトのFormatプロパティを使用するというものです。ここでは、このような方法ではできないようなより複雑な変換により、表示するテキストを決定する方法を紹介します。なお、表示するテキストではなく、セルの値そのものを変更する方法は、こちらで紹介しています。 これを実現するためには、CellFormattingイベントを使用します。こちらで紹介したように、CellFormattingイベントを使用してセルスタイルを変更できますが、それだけではなく、セルに表示するテキスト(それ以外の型も可能)を変更することもできます。 例えば、"Column1"列(String型)のセルの値を大文字にして表示するには、次のようにします。 [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 String Then '大文字にして表示する Dim str As String = e.Value.ToString() e.Value = str.ToUpper() 'フォーマットの必要がないことを知らせる e.FormattingApplied = True 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 string) { //大文字にして表示する string str = e.Value.ToString(); e.Value = str.ToUpper(); //フォーマットの必要がないことを知らせる e.FormattingApplied = true; } } CellFormattingイベントハンドラに渡されるDataGridViewCellFormattingEventArgsオブジェクトのValueプロパティには、フォーマットされていないセルの値が格納されています。Valueプロパティに表示用のテキストを代入した後は、FormattingAppliedプロパティをTrueにして、すでにフォーマット済みであることを知らせます。もしそうしないと、セルスタイルのFormat、NullValue、DataSourceNullValue、FormatProviderプロパティの設定により、Valueプロパティに代入した値がさらにフォーマットされて表示されます。 CellFormattingイベントは頻繁に発生しますので、あまり重い処理をCellFormattingイベントハンドラで行わないようにしてください。 注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|