Con el siguietne codigo pensaba que me limitaria los caracteres numericos a introducir en una celda.Y en cierto modo si que lo hace.El problema esta en que la primera celda donde me posiciono la hace bien,la segunda me pasada doble,la tercera hace 3 pasadas ,etc.No se como evitar que haga mas pasadas de las correspondientes.Es decir cuando yo de doy a un numero en la 2 celda hace dos pasadas por validar con el mismo numero ,pero solo muestra uno.
No se que es lo que pasa si alguien me puede ayudar. Gracias
![Aplauso](http://static.forosdelweb.com/fdwtheme/images/smilies/aplausos.gif)
'Grdi1_EditingControlShowing y validar nos sirven para que es usuario no pued introducir letras en las
' celdas numericas
Private Sub Validar(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
'celda seleccionada
Dim drwFila As DataGridViewCell = grid1.CurrentCell()
Dim final As Integer = 0
'Limitar el tamaño de las columnas
Select drwFila.ColumnIndex
Case 4End Select
final = 5
Case 5
final = 1
Case 6
final = 13
Case 7
final = 11
Case 8
final = 11
Case Else 'otra opcion
final = 50
If cont = final Then
e.Handled = True
Beep()
Else
e.Handled = False
End If
If drwFila.ColumnIndex > 3 Then
'Si son digitos o si es la tecla borrar
If Char.IsDigit(e.KeyChar) Or (Asc(e.KeyChar) = 8) Or (Asc(e.KeyChar) = 46) Then
e.Handled = False
If Char.IsDigit(e.KeyChar) And cont <> final Then
cont = cont + 1
ElseIf (Asc(e.KeyChar) = 8) Then
cont = cont - 1
Else
e.Handled = True
End If
Else
e.Handled = True
End If
End If
End Sub
' cuando una celda del DataGridView pasa del modo normal al de edicion, precisamente usamos este evento porque
' a traves de el podemos obtener la tecla que se ha pulsado, en este caso
Private Sub grid1_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles grid1.EditingControlShowing
AddHandler e.Control.KeyPress, AddressOf Validar
End Sub