domingo, 13 de marzo de 2011

Simular presion de la tecla Enter en Visual Basic.NET 2008

Visual Basic no reconoce automáticamente cada vez que el usuario presiona la tecla Enter para esto es necesario escribir código o solamente dejar que el usuario pueda pasar al siguiente control presionando la tecla Tab o el tabulador.

control Textbox que posee el enfoque

Si necesitamos escribir una función que simule la pulsación de la tecla Tab 

Private Sub moverEnfoque()
        SendKeys.Send("{TAB}")
 End Sub


el cual lo llamariamos desde el evento desencadenado por el control que necesitamos simule que se esta presionando la tecla Enter y quedaria mas o menos asi.


Private Sub codigoTextBox_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles codigoTextBox.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            moverEnfoque()
         End If
End Sub


En el codigo anterior verificamos si se esta presionando la tecla Enter, luego le decimos a Visual Basic que lo vamos a manejar por medio de codigo, seguidamente llamamos a nuestro procedimiento privado que creamos y listo.

Si crees que es mucho codigo ya que solo tienes un control o dos en tu formulario, tambien puedes escribirlo directamente.ejemplo:


Private Sub codigoTextBox_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles codigoTextBox.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
             SendKeys.Send("{TAB}")
         End If
End Sub


cabe destacar que la clase SendKeys lo que hace es proporcionar metodos para enviar pulsaciones de tecla a una aplicacion, no solamente la tecla Enter.

El método Send de la clase SendKeys  lo que hace es enviar una pulsación de tecla a la aplicación activa y solicita como parámetro una variable de tipo String


La tabla siguiente enumera los códigos que se pueden utilizar para especificar los caracteres que no aparecen al presionar la tecla correspondiente (como por ejemplo ENTRAR o TAB).

Tecla                         Código 
RETROCESO              {BACKSPACE} o {BS} 
INTER                       {BREAK} 
BLOQ MAYÚS            {CAPSLOCK} 
SUPR                        {CLEAR} 
SUPRIMIR                  {DELETE} o {DEL} 
FLECHA ABAJO          {DOWN} 
FIN                           {END} 
ENTRAR (teclado numérico) {ENTER} 
ENTRAR                    ~ 
ESC                          {ESCAPE} o {ESC} 
AYUDA                     {HELP} 
INICIO                      {HOME} 
INSERTAR                 {INSERT} 
FLECHA IZQUIERDA    {LEFT} 
BLOQ NUM               {NUMLOCK} 
AV PÁG                     {PGDN} 
RE PÁG                     {PGUP} 
RETORNO                 {RETURN} 
FLECHA DERECHA      {RIGHT} 
BLOQ DESPL              {SCROLLLOCK} 
TAB                           {TAB} 
FLECHA ARRIBA          {UP} 
F1 a F15                     {F1} a {F15}  

También puedes suscribirte si quieres recibir material freso todas las semanas y cada vez que publique un nuevo articulo llegara directamente a tu bandeja de entrada en tu correo electrónico preferido solamente envíame un correo electrónico con asunto "Quiero estar actualizado" al correo cristiancjv@gmail.com y yo personalmente te estaré enviando este y mucha información sobre las mejores practicas de programación.

Espero que este articulo les sea de mucha ayuda. nos vemos pronto.

11 comentarios:

  1. necesito un codigo para vb6 que me ayude a simular un enter en un mismo textbox por ejemplo asi como para que baje de linea

    ResponderEliminar
  2. Hola Anonimo,

    Para hacer lo mismo en visual 6.0 tendrias que hacer un codigo similar.

    Private Sub Text1_KeyPress(KeyAscii As Integer)
    SendKeys "{tab}"
    KeyAscii = 0
    End Sub

    ResponderEliminar
  3. hola,

    estoy intentando leer en un formulario un campo imagen, que necesito para cada cliente. es decir, que me coja la imagen cuando hago una consulta correspondiente a ese cliente. no se si me explico.

    ResponderEliminar
  4. Hola,

    Yo necesitaría el código para la tecla ALT, ya que estoy intentando abrir un documento con word y hacer que automáticamente ejecute opcones del menú, para lo que necesito activar el menú primero.

    ResponderEliminar
  5. Public Sub TextBox1_KeyPress(ByVal sender As Object, _
    ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress

    If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
    MsgBox("Pressed " + Keys.Shift.ToString())
    End If
    End Sub

    ResponderEliminar
  6. buenos dias
    estoy intentando reconocer la tecla enter en un combobox en vb 2010
    estoy pasando ahora desde vb6 a vb 2010
    y el combobox no lee esta tecla
    el codigo es muy simple porque es un prueba

    Private Sub GrupServ_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles GrupServ.KeyPress

    If Asc(e.KeyChar) = 13 Then
    TextBox1.Text = "bruno"
    End If

    End Sub

    intente poner tambien uno stop en la sub por capir si entraba al premer la tecla enter y de efecto no entra

    si puede esplicarme esto leo agradeceria mucho
    salu2
    bruno

    ResponderEliminar
  7. Hola

    Tengo el siguiente codigo y megustaria saber como agrego un enter en la parte que detallo abajo, es posible?

    Private Sub Equipo_KeyDown(KeyCode As Integer, Shift As IntegerByVal)


    'MsgBox KeyCode

    Select Case KeyCode

    Case 107
    [Forms]![frm_plan]![tbl_all_dta_fin subform]!Equipo = [Forms]![frm_plan]![tbl_all_dta_fin subform]!txtplsugp
    ' aqui va el enter
    End Select



    End Sub

    ResponderEliminar
    Respuestas
    1. Hola Jorge,
      simular como que esta presionando el enter lo puedes hacer asi.
      Private Sub Equipo_KeyDown(KeyCode As Integer, Shift As IntegerByVal)


      'MsgBox KeyCode

      Select Case KeyCode

      Case 107
      [Forms]![frm_plan]![tbl_all_dta_fin subform]!Equipo = [Forms]![frm_plan]![tbl_all_dta_fin subform]!txtplsugp
      ' aqui va el enter
      SendKeys.Send("{ENTER}")
      End Select

      End Sub

      aunque si lo que necesitar es simular enter para que ejecute una funcion x, la puedes llamar directamente en vez de simular la presion del enter.

      Saludos!!

      Eliminar
  8. ES MÁS FÁCIL AMIGO, AL FINAL DE TU texto en el TEXTBOX SÚMALE ESTA VARIABLE vbCrLf tantas veces quieras dar enter:

    Por ejemplo, si quieres que esto:
    "Hola + soy Juan Manuel + Vine a verte."
    Te aparezca así:
    Hola
    Soy juan Manuel
    Vine a verte

    Entonces, crea una variable donde sumes todo el texto y coloca tantos vbCrLf (saltos de carrete) como quieras, quedaría así:

    textbox1.text= "Hola + vbCrLf + soy Juan Manuel + vbCrLf + Vine a verte."

    Asegúrate tenerlo en multilínea.

    Si quieres dar 3 enter sería "vbCrLf +vbCrLf +vbCrLf" que te diviertas

    ResponderEliminar
  9. Soy Tom Kingsley, ha pasado un tiempo desde que
    escrito para agradecer al Dr. OHIKHOBO que me ayudó en mi
    vida. Me infecté con HERPES SIMPLEX VIRUS en 2016, fui a muchos
    hospitales para una cura, pero no había solución, así que estaba pensando cómo puedo
    buscar una solución para que mi cuerpo pueda estar bien. Un dia mi tia rosa
    Presénteme al Doctor OHIKHOBO después de haber visto tantos testimonios en línea.
    sobre su medicación a base de hierbas para curar HERPES y me dio su
    correo electrónico: drohikhoboherbalcenter@gmail.com, así que le envié un correo electrónico. Me dijo todo el
    cosas que necesitaba hacer y también me dio instrucciones a seguir, que
    seguido correctamente. Antes de que supiera lo que estaba pasando después de una semana,
    HERPES que estaba en mi cuerpo desapareció. así que si estás teniendo
    herpes o cualquier tipo de enfermedad que se enumera a continuación
    *DIABETES
    *CÁNCER
    *CARRERA
    *ESTERILIDAD
    *ENFERMEDAD DEL CORAZÓN
    *VIH
    * LLEGAS FRÍAS
    *VERRUGAS GENITALES
    Y si también quieres cura, también puedes enviarle un correo electrónico a: drohikhoboherbalcenter@gmail.com oa través de su WhatsApp + 1-740-231-2427

    ResponderEliminar
  10. cual es el simbolo para visual ctrl + enter

    ResponderEliminar