Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rui Baptista

Teclas em C#

Recommended Posts

Boas comunidade! mais uma vez necessito da vossa ajuda.

 

Queria simular um click de um botão através das teclas do teclado mas não estou a conseguir!

Tenho 6 botões na minha form logo precisaria de seis teclas, acho que a forma mais lógica que o fazer é invocar o método keypress ou keydown (não sei as diferenças nem o aconselhado) mas o da form. O problema é que com os botões ele nao assume as teclas.

 

por exemplo:

se eu invocar o método keydown de um dos botões esse método só é executado se o botão estiver seleccionado (com uma borda azul (focus)).

 

provavelmente poderá ser isso que nao me deixa utilizar as teclas. Eu queria utilizar as teclas up left right down mas nao estou a conseguir! ele muda o focus dos botoes :/

 

alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao conheco c# mas posso tentar algumas sugestoes...

 

o delphi usa as teclas de atalho do windows, entao ao setar o texto do botao eh soh colocar um & na frente da letra e ela sera o atalho de alt+tecla para precionar o botao.

 

se nao der isso, tenta os eventos que você mencionou (keypress e down) no formulario e nao no botao, assim acredito que sempre funcionara, pois o form tem foco sempre que a janela estiver ativa.

 

se ainda assim nao funcionar... torce pra alguem te dar uma dica que funcione :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lá...

 

vou postar em vb.net, que é com que trabalho

 

basicamente a diferença entre KeyDown e KeyPress é que no KeyDown você pode usar a combinação com caracteres não-literais como Control Alt e Shift

 

textos de ajuda

 

http://msdn.microsoft.com/pt-br/library/system.windows.forms.control.keydown.aspx

http://msdn.microsoft.com/pt-br/library/system.windows.forms.control.keypress.aspx

http://msdn.microsoft.com/pt-br/library/system.windows.forms.control.keyup.aspx

 

 

 

Eu faria mais ou menos assim

 

Private Sub Form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown


   	Select Case e.KeyCode

       	Case Keys.E
           	'executa o procedimento referente à tecla 'E'

       	Case Keys.R
           	'executa o procedimento referente à tecla 'R'

       	Case Keys.D
           	'executa o procedimento referente à tecla 'D'

       	Case Keys.F
           	'executa o procedimento referente à tecla 'F'

       	Case Keys.C
           	'executa o procedimento referente à tecla  'C'

       	Case Keys.V
           	'executa o procedimento referente à tecla 'V'

       	Case Keys.Up
           	'executa o procedimento referente à tecla seta pra cima

       	Case Keys.Down
           	'executa o procedimento referente à tecla seta pra baixo

       	Case Keys.Left
           	'executa o procedimento referente à tecla seta pra esquerda

       	Case Keys.Right
           	'executa o procedimento referente à tecla seta pra direita


       	Case Else

           	Exit Sub

   	End Select


End Sub

 

espero ajudar

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa forma de utilizar & na frente da letra em c# é parecido (basta por a traz da letra =P) mas mas nao posso utilizar esse forma porque vou utilizar thread para x em x tempo verificar se esta pressionada e acho que assim nao funciona.

 

usar o keypress ou o keydown no form não funciona e é esse mesmo o problema. Nao funciona porque a form tem o foco ,sim , mas dentro a form um dos botões também tem um foco tambem e nao trata o evento das teclas up right down left. Por exemplo se eu nao utilizar essas teclas mas outra tipo a b c d e f funciona lindamente.

 

vamos lá...

 

vou postar em vb.net, que é com que trabalho

 

basicamente a diferença entre KeyDown e KeyPress é que no KeyDown você pode usar a combinação com caracteres não-literais como Control Alt e Shift

 

textos de ajuda

 

http://msdn.microsoft.com/pt-br/library/system.windows.forms.control.keydown.aspx

http://msdn.microsoft.com/pt-br/library/system.windows.forms.control.keypress.aspx

http://msdn.microsoft.com/pt-br/library/system.windows.forms.control.keyup.aspx

 

 

 

Eu faria mais ou menos assim

 

Private Sub Form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown


   	Select Case e.KeyCode

       	Case Keys.E
           	'executa o procedimento referente à tecla 'E'

       	Case Keys.R
           	'executa o procedimento referente à tecla 'R'

       	Case Keys.D
           	'executa o procedimento referente à tecla 'D'

       	Case Keys.F
           	'executa o procedimento referente à tecla 'F'

       	Case Keys.C
           	'executa o procedimento referente à tecla  'C'

       	Case Keys.V
           	'executa o procedimento referente à tecla 'V'

       	Case Keys.Up
           	'executa o procedimento referente à tecla seta pra cima

       	Case Keys.Down
           	'executa o procedimento referente à tecla seta pra baixo

       	Case Keys.Left
           	'executa o procedimento referente à tecla seta pra esquerda

       	Case Keys.Right
           	'executa o procedimento referente à tecla seta pra direita


       	Case Else

           	Exit Sub

   	End Select


End Sub

 

espero ajudar

 

 

Pois isso é o que tenho feito :(

Tente no seu form colocar 3 ou 4 botões e executar esse código. Só não sei se em vb.net da o mesmo problema.

 

Boas pessoal!

 

Gostava de saber se alguém me consegue ajudar.

 

O que queria fazer era: quando pressionado uma tecla do teclado ele executar um comando (especificamente vai mandar uma string para a porta serial), mas ate aqui tudo bem! agora eu queria fazer tipo não estar sempre a soltar e a pressionar a tecla queria tipo "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa". A ideia era quando a tecla estivesse pressionada enviasse informação 1s a 1s ou 100ms a 100ms

 

Alguém consegue ajudar-me?

 

Com os melhores comprimentos,

Rui Baptista

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.