Modulo o Clase para dar enter

12/12/2006 - 20:32 por Yonaides | Informe spam
Saludos al Foro
Me dirijo a ustedes esta vez para preguntar como
podria crear una clase o modulo que me permita
dar enter desde cualquier objeto y que este se vaya al
focus seguiente.

por ejemplo que si estoy en un TEXTBOX1 y preciono [ enter ]
que el focus vaya al TEXTBOX2
tengo una forma pero debo pegarla en todos los objetos en el event
"clickenter"

muchas GRACIAS a TODOS por leer este mensaje.

Preguntas similare

Leer las respuestas

#1 Carlos Gómez
12/12/2006 - 21:04 | Informe spam
En las propiedades de cada uno de los formulario puedes poner la
propiedad KeyPreview=True

Ahora, en el evento KeyPress:

If e.KeyChar = Chr(Keys.Enter) Then
SendKeys.SendWait("{TAB}")
End If

De esta forma, cada vez que pulsas enter, el foco pasa al siguiente
control.
Respuesta Responder a este mensaje
#2 Carlos Gómez
12/12/2006 - 21:06 | Informe spam
Quedó poco claro: el If e.KeyChar hay que ponerlo en el evento
KeyPress del formulario
Respuesta Responder a este mensaje
#3 SoftJaén
12/12/2006 - 21:07 | Informe spam
"Yonaides" preguntó:

como podria crear una clase o modulo que me permita
dar enter desde cualquier objeto y que este se vaya al
focus seguiente.



Para ello te puede servir el siguiente procedimiento, el cual está basado en
un ejemplo de Francesco Balena:

Public Sub SendKeyTab(ByRef sender As Object, _
ByRef e As System.Windows.Forms.KeyEventArgs, _
ByVal frm As Form)

' Desplazar el foco entre los distintos controles TextBox
' mediante la tecla Return. El código está basado en un
' ejemplo de Franceso Balena.
'
' Iniciar todos los controles seleccionados actualmente.
'
Dim ctrl As Control = frm.ActiveControl

Do
' Obtener el siguiente control hacia delante en el
' orden de tabulación.
ctrl = frm.GetNextControl(ctrl, True)

' GetNextControl(ctrl, False) puede devolver Nothing si
' es el primer control.

If Not (ctrl Is Nothing) AndAlso ctrl.CanFocus _
AndAlso ctrl.TabStop Then
' Si el control puede recibir el foco, se lo doy.
ctrl.Focus()
e.Handled = True
Exit Do
End If
Loop

End Sub

Ahora, para llamar al procedimiento utilizarías el evento «KeyDown» del
formulario:

Private Sub Form1_KeyDown(...) Handles Me.KeyDown

If e.KeyCode = Keys.Return Then SendKeyTab(sender, e, Me)

End Sub

Para que los eventos del formulario se produzcan antes que los mismos
eventos de los controles, deberás de establecer a «True» el valor de la
propiedad «KeyPreview» del formulario.

Por último, para evitar el pitido que se produce cuando pulsas la tecla
«Enter», en el evento «KeyPress» del formulario, ejecuta lo siguiente:

Private Sub Form1_KeyPress(...) Handles Me.KeyPress

' Si la tecla pulsada es la tecla Intro ...
If e.KeyChar = Convert.ToChar(Keys.Return) Then
' ... evito el pitido
e.Handled = True
End If

End Sub

¡Eso es todo lo que hay que hacer!

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida