注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。
ユーザーがセルに入力した値をそのままセルの値にするのではなく、何らかの加工を施したものをセルの値にしたいという場合があるでしょう。または、ユーザーが入力した値をセルの値に変換する方法を、通常の方法ではなく、特別な方法により変換したいという場合もあるでしょう。そのような時には、DataGridView.CellParsingイベントを使用します。
例えば、"Column1"列のセルに入力された文字列を大文字にした値がセルの値となるようにするには、次のようにします。
'CellParsingイベントハンドラ Private Sub DataGridView1_CellParsing(ByVal sender As Object, _ ByVal e As DataGridViewCellParsingEventArgs) _ Handles DataGridView1.CellParsing Dim dgv As DataGridView = CType(sender, DataGridView) 'セルの列と型を調べる If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _ e.DesiredType Is GetType(String) Then '大文字にした値をセルの値とする e.Value = e.Value.ToString().ToUpper() '解析が不要であることを知らせる e.ParsingApplied = True End If End Sub
//CellParsingイベントハンドラ private void DataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e) { DataGridView dgv = (DataGridView)sender; //セルの列と型を調べる if (dgv.Columns[e.ColumnIndex].Name == "Column1" && e.DesiredType == typeof(string)) { //大文字にした値をセルの値とする e.Value = e.Value.ToString().ToUpper(); //解析が不要であることを知らせる e.ParsingApplied = true; } }
CellParsingイベントハンドラに渡されるDataGridViewCellParsingEventArgsオブジェクトのValueプロパティには、ユーザーが入力した値が格納されています。Valueプロパティに実際にセルの値とする値を代入した後は、ParsingAppliedプロパティをTrueにします。
Valueプロパティにセルの型とは異なる値を代入した場合は、通常の方法により解析、変換されます。
セルの値を変更するのではなく、表示するテキストを変更する場合は、こちらを参考にしてください。