DataGridViewのセルに入力された値が正しいか確かめる注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 ユーザーがセルに入力した値が正しいかどうかを調べ、正しくなければ入力をキャンセルするには、CellValidatingイベントを使用します。 以下に示す例では、"Column1"列のセルが空である時、その行にエラーテキストを設定して、別のセルにフォーカスが移らないようにしています。 [VB.NET] 'CellValidatingイベントハンドラ Private Sub DataGridView1_CellValidating(ByVal sender As Object, _ ByVal e As DataGridViewCellValidatingEventArgs) _ Handles DataGridView1.CellValidating Dim dgv As DataGridView = CType(sender, DataGridView) If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _ e.FormattedValue.ToString() = "" Then '行にエラーテキストを設定 dgv.Rows(e.RowIndex).ErrorText = "値が入力されていません。" '入力した値をキャンセルして元に戻すには、次のようにする 'dgv.CancelEdit() 'キャンセルする e.Cancel = True End If End Sub 'CellValidatedイベントハンドラ Private Sub DataGridView1_CellValidated(ByVal sender As Object, _ ByVal e As DataGridViewCellEventArgs) _ Handles DataGridView1.CellValidated Dim dgv As DataGridView = CType(sender, DataGridView) 'エラーテキストを消す dgv.Rows(e.RowIndex).ErrorText = Nothing End Sub [C#] //CellValidatingイベントハンドラ private void DataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { DataGridView dgv = (DataGridView)sender; if (dgv.Columns[e.ColumnIndex].Name == "Column1" && e.FormattedValue.ToString() == "") { //行にエラーテキストを設定 dgv.Rows[e.RowIndex].ErrorText = "値が入力されていません。"; //入力した値をキャンセルして元に戻すには、次のようにする //dgv.CancelEdit(); //キャンセルする e.Cancel = true; } } //CellValidatedイベントハンドラ private void DataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e) { DataGridView dgv = (DataGridView)sender; //エラーテキストを消す dgv.Rows[e.RowIndex].ErrorText = null; } CellValidatingイベントハンドラには、DataGridViewCellValidatingEventArgsオブジェクトが渡されます。このFormattedValueプロパティを検査することにより、正しい値であるかを判断します。ただしこの値は、表示用の書式指定済みの値であり、セルの本当に値ではありません。 CancelプロパティをTrueにすることにより、セルに入力された値を確定しないようにします。この時、現在のセルが別のセルに移動できないようになります。 行のErrorTextプロパティを使用して、その行のヘッダーセルにエラーアイコンを表示しています。エラーアイコンについては、こちらで説明しています。 補足:編集中のセルにはエラーアイコンが表示されないため、上記の例でセルのErrorTextプロパティにエラーテキストを設定しても、エラーアイコンが表示されません。編集中のセルにエラーアイコンを表示する方法は、「How do I show the error icon when the user is editing the cell?」で説明されています。 このエラーテキストは適当なタイミング(正しい値が入力された時)で消す必要があります。CellValidatedやCellEndEditイベントハンドラで消すのが適当でしょう。上記の例では、CellValidatedイベントを使用しています。 注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|