none
Restringir valor de una celda del datagridview RRS feed

  • Pregunta

  • Hola compañeros.

    Necesito saber como restringir los valores de una celda del datagridview. Tengo una columna que solo debería aceptar S o N.

    Gracias por la ayuda.

    miércoles, 27 de mayo de 2015 7:12

Respuestas

  • Tienes que declarar un método que se encargue de validar las teclas pulsadas y en el evento EditingControlShowing del DataGrid asocias ese método a la pulsación de teclas.

    Algo como esto:

        Private Sub ValidarTeclas(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
            If DataGridView1.CurrentCell.ColumnIndex = 1 Then  ' Aquí pones el nº de columna que quieras controlar
                If InStr("SN", e.KeyChar.ToString.ToUpper) > 0 Then
                    e.Handled = False
                Else
                    e.Handled = True
                End If
            Else
                e.Handled = False
            End If
        End Sub
    
        Private Sub DataGridView1_EditingControlShowing(sender As Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
            RemoveHandler e.Control.KeyPress, AddressOf ValidarTeclas
            AddHandler e.Control.KeyPress, AddressOf ValidarTeclas
        End Sub


    Saludos, Javier J

    • Marcado como respuesta JotaQ miércoles, 27 de mayo de 2015 20:34
    miércoles, 27 de mayo de 2015 7:41

Todas las respuestas

  • Aquí tengo un ejemplo de una columna que acepta únicamente números, el principio sería el mismo.

    Windows Forms. DataGridView. Columna que acepta sólo números.

    Espero que te sirva.

    miércoles, 27 de mayo de 2015 7:41
  • Tienes que declarar un método que se encargue de validar las teclas pulsadas y en el evento EditingControlShowing del DataGrid asocias ese método a la pulsación de teclas.

    Algo como esto:

        Private Sub ValidarTeclas(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
            If DataGridView1.CurrentCell.ColumnIndex = 1 Then  ' Aquí pones el nº de columna que quieras controlar
                If InStr("SN", e.KeyChar.ToString.ToUpper) > 0 Then
                    e.Handled = False
                Else
                    e.Handled = True
                End If
            Else
                e.Handled = False
            End If
        End Sub
    
        Private Sub DataGridView1_EditingControlShowing(sender As Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
            RemoveHandler e.Control.KeyPress, AddressOf ValidarTeclas
            AddHandler e.Control.KeyPress, AddressOf ValidarTeclas
        End Sub


    Saludos, Javier J

    • Marcado como respuesta JotaQ miércoles, 27 de mayo de 2015 20:34
    miércoles, 27 de mayo de 2015 7:41