Usuário com melhor resposta
Evento KeyPress não funciona com Enter

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.
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
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
-
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
-
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
-
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.
-
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 SubMARIANO1776
- Sugerido como Resposta Mariano1776 sexta-feira, 21 de fevereiro de 2020 23:09