LA GESTIONE DELLA TASTIERA IN C#


In questo articolo vedremo come utilizzare alcuni eventi riguardanti i tasti della tastiera per ottenere informazioni su quando si preme un tasto e a quale tasto corrisponde.
Esistono 4 differenti eventi
  • KeyDown
  • KeyPressed
  • KeyUp
  • PreviewKeyDown
I primi 3 vengono generati quando si preme un tasto mentre il controllo dispone dello stato attivo.
PreviewKeyDown si verifica prima che scatti l'evento KeyDown , quando viene premuto un tasto mentre è attivo il controllo.

Gli eventi relativi alla pressione dei tasti si verificano nel seguente ordine: KeyDown, KeyPressed, KeyUp.
Per capire quale tasto viene premuto è possibile utilizzare e.KeyCode, e.KeyValue e e.KeyData che funzionano per PreviewKeyDown, KeyDown e KeyUp ma non per KeyPressed . Vediamo un esempio:
        private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F:
                {
                    // Premuto il tasto F
                    break;
                }
                case Keys.D:
                {
                    // Premuto il tasto D
                    break;
                }
            }
        }
E' anche possibile capire se vengono premuti i tasti [SHIFT], [ALT], e [CTRL] attraverso e.Shift, e.Control ed e.Alt . Questo lo si può fare solo all'interno degli eventi PreviewKeyDown, KeyDown e KeyUp .
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if (e.Alt)
    {
        //e.Alt mi restituisce un valore booleano che indica se il tasto Alt è premuto
    }
}
Possiamo ottenere la stessa cosa e anche al di fuori di questi 3 eventi, tramite My.Computer.Keyboard.ShiftKeyDown, My.Computer.Keyboard.ControlKeyDown e My.Computer.Keyboard.AltKeyDown.

Stessa cosa per Caps Lock, Scroll Lock e Num Lock utilizzando My.Computer.Keyboard.CapsLock, My.Computer.Keyboard.ScrollLock e My.Computer.Keyboard.NumLock . Il valore booleano restituito, ci informa se i suddetti tasti sono abilitati.

e.KeyChar viene utilizzato all'interno dell'evento KeyPressed e ci ritorna esattamente quello che viene premuto. Quindi se premiamo il tasto [A] ci ritornerà "a" ma se premiamo contemporaneamente [SHIFT]+[A] il valore restituito sarà "A".

private void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    password += e.KeyChar;
    //I caratteri premuti vengono memorizzati in una variabile password di tipo stringa
}
Possiamo anche simulare la pressione di uno o più tasti attraverso la funzione My.Computer.Keyboard.SendKeys.
My.Computer.Keyboard.SendKeys("F");
'Viene simulata la pressione del tasto [F]
My.Computer.Keyboard.SendKeys("Fdonet.com")
'Viene simulata la pressione dei tasti [SHIFT]+[F],[D],[O],[N],[E],[T],[.],[C],[O],[M]

Autore: Fabrizio De Odorico

TAGS: C#, Control, e.KeyChar, Num Lock, Pressione, Ps Lock, Scroll Lock, SendKeys, Shift, Tasti, Tastiera

Postato il 27/01/2013 | Invia ad un amico  |   Versione stampabile  |   Aggiungi ai preferiti  |   Visite: 3060  |   Contattami su whatsapp

Modulo Login

 

 

 

 

 

Vuoi offrirmi un caffè?

Se trovi utili i miei articoli o vuoi aiutarmi ad aggiungere altro materiale sul sito...

fai una Donazione

Terminologia

La piattaforma .Net è una suite di prodotti creata dalla Microsoft dove i vari linguaggi di programmazione sono orientati agli oggetti (da C# a Visual Basic a J#).
Il bytecode di .NET viene compilato al momento dell'esecuzione (just in time compilation) ed è compatibile con le sole piattaforme Windows.

Java è un linguaggio di programmazione orientato agli oggetti creato dalla Sun Microsystems.
Il bytecode, generato dalla compilazione, viene interpretato dalla Java Virtual Machine in fase di esecuzione. Per questo motivo le applicazioni java sono indipendenti dall'hardware sulle quali vengono eseguite.