在datagridview中,当我编辑单元格的内容并进行一些更改时,我想验证我键入的每个字符。 我很困惑,哪个事件适合这个。我尝试了cellvaluechanged事件。但它只发生在 第一次单击单元格时。但我希望每次在单元格内输入时都要验证。请告诉我 我哪个活动适合这个。
我尝试了什么:
private void dataGridView1_CellValueChanged(object sender,
DataGridViewCellEventArgs e){
if(dataGridView1.Columns[e.ColumnIndex].Name == "Reference")
{
//My code goes here
}
}
答案 0 :(得分: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()事件中构建自己的验证。我已经将这两种方法一起用于大多数数据网格视图。