我有一个数据网格视图,在这里我必须将输入限制为其中一列的数字输入(整数和小数位)。用户正在将值直接输入到数据网格视图。总共有2列,其中一列是只读的。我现在有以下代码:
Private Sub dgv1_CellEndEdit(By Val sender As System.Object, ByVal e As System.Windows.Form.DataGridViewCellEventArgs) Handles dgv1.CellEndEdit
If (e.ColumnIndex =1) Then 'This is the column where I want to restrict input
If dgv1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value <> Nothing Then
Dim value As String = dgv1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString()
If Not Information.IsNumeric(value) Then
MessageBox.Show("Invalid entry.")
dgv1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = String.Empty
Exit Sub
End If
End If
End If
End Sub
我遇到的问题是,如果我输入3,3或4,2(其中,在数字之间或之后),则不会将其视为无效输入,并且没有错误。但是,可以识别相同格式的任何其他特殊字符+或-或@并显示错误消息。为什么此代码无法识别出它是无效的,我如何包括该检查?谢谢。
答案 0 :(得分:0)
在欧洲,逗号用于将单位与十分之一分开,例如英语使用点(在欧洲为10.3 =十而十分之三= 10,3),因此VB将其识别为有效数字。我会将您的条件更改为以下内容:
If (Not Information.IsNumeric(value)) OrElse value.Contains(",") Then