[Resolvido] Teclas de atalho - Visual Basic .NET - Portugal-a-Programar
Por pmaster, 13 de Novembro de 2008 em Visual Basic .NET
Eu queria na minha aplicação em vb criar teclas de atalho.
Eu consigo fazer mas apenas uma tecla. Mas eu quero fazer uma combinação de 2 por exemplo Ctrl + L
Li que tinha mos de definir uma tecla como morta mas não faço ideia como fazer se alguem me poder dar uma luzes eu agradecia.
para te puder ajudar, preciso que me digas como estas a fazer para utilizar as teclas de atalho. Tens algum código k possas mostrar ou podes dar mais pormenores?
Não vi esta questão
É só utilizares as teclas de atalho para fazer algo (tipo executar determinado código) ? É só isso ?
Mostra, como o NuGun já referiu, algum código.
Eu hoje de manha fiz uma nova pesquisa eencontrei o que queria no blog que tem "na frase" o moderador jpaulino e o que me faltava era "AndAlso" e assim comsegui combinar 2 teclas para fazer um atalho.
Mas o AndAlso não é o truque e a secção correcta é VB.NET (vou mover).
Este é o código e funciona também com o "And" apenas:
A diferença entre o And e o AndAlso é que o AndAlso é designado um short-circuiting evaluator or seja avalia a primeira condição, depois a segunda, e por ai fora, e não em bloco. O que aconteçe é que se a primeira condição for falsa sai logo sem ligar ao resto do código. É mais rápido e melhor para evitar erros. Por exemplo, pode-se verificar se um objecto está criado na primeira condição e se estiver, aceder a um dos seus membros na segunda (coisa que com o And dá erro).
O And verifica todas as condições e se no final se o resultado for verdadeiro ou falso faz algo.
Ou podes fazer uma coisa deste genero que acho mais simples e talvez mais indicado:
Protected Overloads Overrides Function ProcessCmdKey(ByRef m As Message, ByVal keyData As Keys) As Boolean
Case Keys.Control Or Keys.L 'Ctrl + L
'aqui vai o teu codigo para este atalho
Se usares o evento KeyDown do respectivo form, poderá não funcionar como pretendes (se é aquilo que penso). Se o que tu queres é que este atalho, Ctrl+L, seja "executado" sempre que pressionares este combinação de teclas desde que o form tenha focos-- independentemente do controlo interno que tenha focos-- talvez esta seja a forma mais indicada. Mas como ainda não explicaste ao certo aquilo que pretendes, não vou divagar mais...
Eu experimentei com o AND apenas mas não resultava, e experimentei de varias maneiras mas nao dava resultado.
Exactamente Nazgulled é mesmo isso que pretendia.
Testei e funciona na perfeição.
fiquei com uma duvida: Or significa ou, por isso a meu ver ele divia de detectar uma tecla ou outra mas detecta quando sao as duas.
Deve ter faltado definires no form o KeyPreview = True
O problema dos overrides é quando são mal utilizados podem causar problemas à aplicação. Além disso não tem o mesmo número de eventos que os que estão disponíveis no form, como o por exemplo, keydown, keyup, etc.
No entanto eu também uso muitas vezes!
O problema dos overrides é quando são mal utilizados podem causar problemas à aplicação.
Eu não considero isso como um "problema". Acho que basta saber o que se está fazer, sabendo isso, não há problema nenhum em usar overrides. Mas lá está, eu aqui nem expliquei nada do ProcessCmdKey, apenas coloquei código. O que pode causar problemas no futuro...
Para isso, recomendo ao pmaster que leia com atenção a documentação sobre o ProcessCmdKey na MSDN. Principalmente para perceber o que é que aqueles "returns" fazem e como devem ser usados. É um exemplo básico, mas convém saber exactamente o que estamos a fazer para prevenir os "problemas" de que o jpaulino fala.
Sem dúvida em ler sempre a documentação, mas eu não me referi apenas ao ProcessCmdKey mas sim aos overrides no geral. Podem alterar comportamentos que depois podem dar problemas no código.
Sim, mas normalmente quem faz overrides a torto e a direito, sabe o que faz, penso eu lol...
Vou ler a documetação sobre os overrides mesmo até para aprender mais sobre isto.
Olá caro colega estive a ver o que estás á procura e achei no site do jpaulino a tua resposta , consulta lá que encontras. Também encontras os 2 do costume ás turras , mas acho que é assim é que tiramos dúvidas.
Link http://vbtuga.blogspot.com/2008/09/vbnet-criando-hotkeys-teclas-de-atalho.html
Isso é para criar teclas de atalho globais no sistema mas o que me parece que ele quer (até porque já disse que o problema estava resolvido) era teclas de atalho na aplicação.
@programadorvb6, isto são teclas na aplicação e não globais para se poder utilizar sem que a aplicação esteja seleccionada. Fizeste confusão