输入验证DataGridView中的整数

时间:2013-06-18 22:50:17

标签: vb.net parsing validation datagridview

我可以使用下面的代码来检查用户是否在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

2 个答案:

答案 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