none
Evento KeyPress não funciona com Enter RRS feed

  • Pergunta

  • Eu quero fazer com que a tecla 'Enter' funcione como a tecla 'Tab' do teclado. Mas no código que eu fiz o evento não é disparado ao apertar o Enter.

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
    
            If e.KeyChar = Convert.ToChar(13) Then
                e.Handled = True
                SendKeys.Send("{TAB}")
            End If
    
        End Sub

    Esse código já funcionou em outros forms, o problema é agora o evento só é disparado quando é apertado alguma tecla que é caractere (como o "a", "8", ";", "~", "/"...). Mas quando é apertado teclas que não são caractere (como o Enter, Backspace, Alt, F2, ...). Aí o evento não funciona.

    E esse método funcionava antes, mas depois de fazer algumas alterações nos controles no form ele simplesmente parou de funcionar.

    sexta-feira, 9 de outubro de 2015 01:19

Respostas

  • Aqui Amigo, eu testei e funcionou normal. Espero que de certo para vc. Faça como eu fiz abaixo e se ajudar deixe seu like maroto vlw. :)


    'coded By pjoao1578
    Public Class Form1

        Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
            Select Case e.KeyData
                Case (Keys.Enter) 'key a ser precionado
                    MsgBox("ok") 'mensagem
            End Select
        End Sub

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.KeyPreview = True 'ativar keys
        End Sub
    End Class


    • Editado Marcos SJ terça-feira, 13 de outubro de 2015 17:51 Edição
    • Marcado como Resposta Marcos SJ terça-feira, 13 de outubro de 2015 17:51
    sexta-feira, 9 de outubro de 2015 15:11

Todas as Respostas

  • Sinnyestter...

    você deve utilizar esse código no evento KeyPress e não no Load

        Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
            If e.KeyChar = Convert.ToChar(13) Then
                e.Handled = True
                SendKeys.Send("{TAB}")
            End If
        End Sub

    Além disso, altere a propriedade KeyPreview do Form para True.

    Abraço!


    Natan

    sexta-feira, 9 de outubro de 2015 01:43
  • Olá Natan.

    Mesmo assim ainda não funcionou, continuou a mesma coisa. Acho que o nome do método não influencia no evento, o que vai determinar qual que vai ser o evento vem depois do Handles.

    Handles MyBase.KeyPress

    E também já alterei a propriedade KeyPreview do Form.


    • Editado Sinnystter sexta-feira, 9 de outubro de 2015 02:13
    sexta-feira, 9 de outubro de 2015 02:13
  • Aqui Amigo, eu testei e funcionou normal. Espero que de certo para vc. Faça como eu fiz abaixo e se ajudar deixe seu like maroto vlw. :)


    'coded By pjoao1578
    Public Class Form1

        Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
            Select Case e.KeyData
                Case (Keys.Enter) 'key a ser precionado
                    MsgBox("ok") 'mensagem
            End Select
        End Sub

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.KeyPreview = True 'ativar keys
        End Sub
    End Class


    • Editado Marcos SJ terça-feira, 13 de outubro de 2015 17:51 Edição
    • Marcado como Resposta Marcos SJ terça-feira, 13 de outubro de 2015 17:51
    sexta-feira, 9 de outubro de 2015 15:11
  • Tive o mesmíssimo problema. onde a tecla "Enter não estava sendo reconhecida pelo evento. pois os controles que você adicionou no seu formulário está recebendo uma ordem de tabulação 0, com isso a tecla Enter fica "ocupada" com esse controle. Oque eu fiz foi selecionar todos os controles do meu Form e mudar a propriedade "TabStop" para false; Isso Resolveu o problema pra mim.
    sexta-feira, 13 de dezembro de 2019 01:23
  • Bom dia.

    Além de habilitar o keypreview do form, a sequencia correta é esta:

       Private Sub FRM_Principal_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
            If e.KeyChar = Chr(13) Then
                 SendKeys.Send("{TAB}")
                e.Handled = True
            End If
        End Sub


    MARIANO1776

    • Sugerido como Resposta Mariano1776 sexta-feira, 21 de fevereiro de 2020 23:09
    domingo, 15 de dezembro de 2019 15:06