none
Como usar um keydown para qualquer form? RRS feed

  • Pergunta

  • Olá

    Gente, preciso fechar meu form com um "Esc":

    Private Sub LogOn_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown

    If e.KeyCode = Keys.Escape Then Application.Exit() End If

    Exit Sub



    A questão é que eu tenho dezenas de forms além do principal, e preciso adicionar o código em cada keydown.

    É possível adicionar um keydown universal, ou seja, executar  o "Exit" independente do form?

    Desde já agradeço.

    sexta-feira, 17 de março de 2017 02:38

Respostas

  • Olá João.

    Obrigado por me ajudar, mas então mantenho como estava fazendo mesmo, até uma possível solução. :/

    • Marcado como Resposta Eliseu5 quinta-feira, 23 de março de 2017 11:12
    quinta-feira, 23 de março de 2017 11:12

Todas as Respostas

  • Bom dia Eliseu,

    Em C# há o conceito de herança e cada form herda da classe Form.

    Talvez você possa fazer em VB com que seus forms herdem de um form que implemente essa funcionalidade, assim todos terá essa opção.

    atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 20 de março de 2017 14:02
    Moderador
  • Olá Robson

    Obrigado por seu interesse em me ajudar.

    Não sei como fazer. Estou usando atualmente o "KeyPreview = True" em cada form, com o código em cada evento "Me.KeyDown". Só que como eu tenho vários forms, torna-se trabalhoso, além de correr o risco de esquecer de inserir o código em forms novos.


    • Editado Eliseu5 segunda-feira, 20 de março de 2017 16:29
    segunda-feira, 20 de março de 2017 16:29
  • Boa noite amigo, bom eu tenho esse metodo aqui, veja se resolve seu problema.

    Codigo

    Public Class Form1
    
        'coded by pjoao :) espero ter ajudado vc
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            AddHandler Me.KeyDown, AddressOf KeyDownrun 'form 1
            AddHandler Form2.KeyDown, AddressOf KeyDownrun 'form 2
        End Sub
    
        Public Sub KeyDownrun(sender As Object, e As KeyEventArgs) 'usando so uma sub, use Public para ser publica essa sub. 
            If e.KeyCode = Keys.Escape Then
                Application.Exit()
            End If
        End Sub
    End Class
    Usando so uma sub eu fiz com que dois formes usasse a mesma sub.

     
    terça-feira, 21 de março de 2017 01:41
  • Olá João.

    Agradeço por seu interesse em me ajudar, no entanto seu exemplo apenas centraliza as ações em um único form, mas eu ainda tenho que adicionar o comando para cada form (AddHandler Form2, AddHandler Form3, etc.)

    terça-feira, 21 de março de 2017 17:37
  • E claro voce tem que fazer manualmente, acho que a forma que voce quer simplificar acho que nao e possivel. Ate a proxima :) 
    quarta-feira, 22 de março de 2017 01:15
  • Olá João.

    Obrigado por me ajudar, mas então mantenho como estava fazendo mesmo, até uma possível solução. :/

    • Marcado como Resposta Eliseu5 quinta-feira, 23 de março de 2017 11:12
    quinta-feira, 23 de março de 2017 11:12
  • ok de nada
    quinta-feira, 23 de março de 2017 15:05