Visual Basic.NET - Evento key_press en .NET

   
Vista:

Evento key_press en .NET

Publicado por Schuster (81 intervenciones) el 18/11/2009 13:45:00
necesito lanzar una funcion de eliminar cuando el usuario pulse dos veces seguidas la tecla supr. si se puede controlar el tiempo entre pulsaciones mejor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Bernardo Vecco

RE:Evento key_press en .NET

Publicado por Bernardo Vecco (8 intervenciones) el 19/11/2009 21:55:18
Hola Schuster:

Mira, yo hice en un formulario, una función que llama a todas las cajas de texto que agrupo después del Handles: La función la llamé "LasComaPunto" y le aplico el evento KeyPress como podrás observar. Si el usuario apreta la tecla Enter, llevo al foco según puedes ver en el Select Case de cada uno. Fijate como la variable local objTextBox irá a representar a la CajaTexto de origen. Si pulsa retroceso u otra tecla, en el If End If tiene su efecto, como podrás observar. Aprovecho e.Handled para permitir o no el efecto de la tecla pulsada. No sé si esta función cubrirá tus necesidades específicas, pero seguro que algún provecho le encontrarás. Estudiala bien, paso a paso y consultá con el Help. Suerte. Bernardo (bernardo.planning@gmail.com), Córdoba, Argentina.

Private Sub LasComaPunto_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles ctUnidades.KeyPress, ctPrecioUnitario.KeyPress, ctPctoDescuento.KeyPress, ctPctoImpuesto.KeyPress
' Ceballos2, 213
Dim objTextBox As TextBox = CType(sender, TextBox)
If e.KeyChar = Convert.ToChar(13) Then ' se pulsó <Enter>
Select Case objTextBox.Name
Case Is = "ctUnidades"
Me.ctPrecioUnitario.Focus()
Case Is = "ctPrecioUnitario"
Me.ctPctoDescuento.Focus()
Case Is = "ctPctoDescuento"
Me.ctPctoImpuesto.Focus()
Case Is = "ctPctoImpuesto"
Me.btAgregar.Select()
End Select
ElseIf e.KeyChar = Convert.ToChar(8) Then ' se pulsó <Retroceso>
e.Handled = False ' Handled = True, no permite; = False, si permite...
ElseIf (e.KeyChar = ","c) Then
e.KeyChar = "."c ' le cambio la "," por el "." para que sólo exista "." siempre
Dim ctrl As TextBox = DirectCast(sender, TextBox) ' Option Strict está en On
If (ctrl.Text.IndexOf("."c) <> -1) Then ' sólo puede haber un punto
' Sólo puede haber un punto; O sea, no deja poner otro punto
e.Handled = True
End If
ElseIf (e.KeyChar = "."c) Then
Dim ctrl As TextBox = DirectCast(sender, TextBox)
' Si no es "-1" es porque encontró ya un "."
If (ctrl.Text.IndexOf("."c) <> -1) Then ' sólo puede haber un punto
' Sólo puede haber un punto; O sea, no deja poner otro punto
e.Handled = True
End If
ElseIf (e.KeyChar < "0"c Or e.KeyChar > "9"c) Then
' desechar los caracteres que no son dígitos (0 - 9)
e.Handled = True
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar