Come impedire a un controllo Winforms di ascoltare la tastiera
Domanda
Per un determinato modulo di input, vorrei rendere possibile l'input con la tastiera. So leggere i tasti tramite KeyPressed e KeyUp, ma il problema è che quando un controllo ha lo stato attivo e l'utente preme il tasto Invio, quel controllo riceve l'evento a Click. È possibile prevenire questo comportamento? Oppure è possibile sapere se un evento Click è stato attivato dal mouse o dalla tastiera?
Soluzione
Questo aiuta? Da Microsoft Knowledge Base
Sposta il codice del pulsante dal pulsante.Clicca () su un pulsante.MouseClick ()
Altri suggerimenti
Questo sarebbe più semplice se tu potessi descrivere la situazione e il comportamento esatto che vuoi ... :)
Puoi impostare:
Form.KeyPreview = True
Questo invia prima gli eventi chiave al modulo, quindi al controllo. Ciò ti dà la possibilità di catturare gli eventi chiave nel modulo e di "annullarli":
e.Handled = True
Assicurati inoltre di non aver impostato AcceptButton per il modulo!
Puoi anche ascoltare gli eventi della tastiera e filtrare i tasti.