Soy capaz de utilizar el código siguiente para comprobar si es o no un usuario escribe una cadena en un datagridview de la célula. Si el usuario introduce una cadena aparece un mensaje para decirles «sólo las entradas numéricas están permitidos». Esto es exactamente lo que quiero que mi código para hacer. Sin embargo si intento utilizar este código en una columna de datos se rellena con los números me sale un mensaje de error que dice «error ocurrido, el análisis de cometer». Si alguien es capaz de averiguar cuál es el problema aquí me sería de gran aprecio!

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 Comentarios

  1. 3

    Esta solución no sólo los cheques para valores no enteros, también funciona para cada columna rellena con los números para todo el datagridview. También si el usuario introduce un no-entero si se proporciona un valor por defecto para el datagridviewcell, este valor predeterminado es el número anterior.

    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
  2. 2

    Hacer esto en cellvalidating evento …

    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
    • No estoy siguiendo este. Puede usted explicar?
    • se dice que el «e.columnindex» no es parte de la EditingControlShowing
    • Todavía no está funcionando
    • Lo siento por eso. Así que estoy tratando de conseguir un mensaje de error pop-up cuando se escribe una cadena en el datagridview.
    • ¿qué mensaje de error ?
    • No estoy exactamente seguro de lo que el código que se incluye se debe hacer, pero no hace nada para mí. Quiero un simple cuadro de mensaje pop-up es un usuario escribe una carta en el datagridview celular para avisar al usuario de que él/ella no puede introducir las letras en el campo. Entonces quiero un valor predeterminado «3» para rellenar el datagridviewcell después de que el mensaje
    • Así que voy a hacer en tu camino .. prueba esto
    • Muchas gracias por tu ayuda, me voy a dar un +1 para todo su trabajo.

Dejar respuesta

Please enter your comment!
Please enter your name here