2017-04-24 33 views
0

datagridviewでは、セルの内容を編集していくつかの変更を加えたとき、それぞれの文字を検証したいと思います。 Iamは混乱しており、このイベントはこれに適しています。私はcellvaluechangedイベントを試みた。しかし、初めてセルをクリックすると の場合にのみ発生しています。しかし、私はセルの中にタイプするたびに検証したい。どのイベントがこれに適しているか教えてください。 私が試した何DataGridviewセルの内容値が手動で入力されているかどうかを確認する方法

private void dataGridView1_CellValueChanged(object sender, 
DataGridViewCellEventArgs e){ 
if(dataGridView1.Columns[e.ColumnIndex].Name == "Reference") 
{ 
//My code goes here 
} 
} 
+0

あなたの '_CellValueChanged'イベントハンドラ内にブレークポイントを置き、値を変更してブレークポイントに当たるかどうかを確認してください。私の意見では、値を変更してから条件を再定義/ 。 –

+0

どのような種類のバリデーションをより具体的に行うことができますか?入力時にセルの検証やユーザー入力の書式設定を行う機能が組み込まれています。あなたが検証しようとしていることは正確には不明です。 – JohnG

+0

セルで数値文字のみを許可する方法の1つとして、 'EditingControlShowing'イベントを配線して、セルの編集時にキャプチャすることができます。そこから、編集中のセルが数値入力を許可する列(例1列)にあるかどうかを確認し、次に「EditingControlShowing」の内側で「Column1_KeyPress」のような別のイベントメソッドを作成します。そこから、ユーザーが入力する文字を扱うことができます。この例では、数字でない文字はすべて無視します。 – JohnG

答えて

0

私はあなたがそれらをすることを期待するとき、彼らは常に発生しませんので、デバッグが困難DGVでイベントを見つけるのですか。時には値がセルに入力される前後に発生し、あなたの例では一度だけ発生します。

私はこの周りを持っている方法は、以下のイベント_CurrentCellDirtyStateを()操作にある:

Private Sub datagridview1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) _ 
    Handles datagridview1.CurrentCellDirtyStateChanged 
    if datagridview1.IsCurrentCellDirty 
     datagridview1.CommitEdit(DataGridViewDataErrorContexts.Commit) 
    End If 
End Sub 

これは(キープレスに)ダーティセルをコミットします。各入力で_CellValueChanged()イベントの変更を取得できるようになりました。次の例では、変更されたセル値に保存ボタンを有効にします。

Private Sub datagridview1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) _ 
    Handles datagridview1.CellValueChanged 
    btnSave.Enabled = true 
End Sub 

しかし、検証を実行する場合は、次のリンクの例に従うことをお勧めします。

Make a specific column only accept numeric value in datagridview in Keypress event

あなたは_KeyPress()イベントに独自の検証を構築することができます。私は、これらのメソッドを両方とも、データグリッドビューの大部分に使用しました。

関連する問題