Input Validation for an integer in DataGridView

11,137

Solution 1

This solution not only checks for non-integer values it also works for every column populated with numbers for the entire datagridview. Also if the user inputs a non-integer if will supply a default value for the datagridviewcell, this default value is the previous number.

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

Solution 2

Do this in cellvalidating event ...

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
Share:
11,137
stackexchange12
Author by

stackexchange12

Updated on June 04, 2022

Comments

  • stackexchange12
    stackexchange12 almost 2 years

    I'm able to use the code below to check whether or not a user inputs a string in a datagridview cell. If the user inputs a string a message pops up to tell them "only numeric entries are allowed". This is exactly what I want my code to do. However if I try to use this code in a column of data populated with numbers I get an error message that says "error happened, parsing commit". If anyone is able to figure out what the issue is here I would greatly appreciate it!

    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