我可以使用下面的代码来检查用户是否在datagridview单元格中输入字符串。如果用户输入一个字符串,则弹出一条消息告诉他们“只允许数字输入”。这正是我想要我的代码所做的事情。但是,如果我尝试在填充了数字的数据列中使用此代码,则会收到一条错误消息,指出“发生错误,解析提交”。如果有人能够弄清楚这里的问题,我将非常感激!
If (e.ColumnIndex = 3) Then 'checking numeric value for column 3 only
Dim value As String = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
For Each c As Char In value
If Not Char.IsDigit(c) Then
MessageBox.Show("Please Enter numeric Value")
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = 3 'This will set the defaultvalue of the datagrid cell in question to the value of "3"
Exit Sub
End If
Next
End If
答案 0 :(得分:3)
此解决方案不仅检查非整数值,它还适用于填充整个数据网格视图的数字的每个列。此外,如果用户输入非整数if将为datagridviewcell提供默认值,则此默认值为先前的数字。
Private Sub DataGridView1_DataError(ByVal sender As Object, _
ByVal e As DataGridViewDataErrorEventArgs) _
Handles DataGridView1.DataError
If StrComp(e.Exception.Message, "Input string was not in a correct format.") = 0 Then
MessageBox.Show("Please Enter a numeric Value")
'This will change the number back to original
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = " "
End If
End Sub
答案 1 :(得分:2)
在cellvalidating事件中执行此操作...
If (e.ColumnIndex = 3) Then 'checking numeric value for column 3 only
If Not Isnumeric(e.Formatted.Value) Then
MessageBox.Show("Please Enter numeric Value")
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = 3 'This will set the defaultvalue of the datagrid cell in question to the value of "3"
Exit Sub
End If
End If