2011-08-16 6 views
11

Ho domanda circa 's il KeyEventArgsKeyCode e KeyData e KeyValue. KeyCode e Keydata sono di tipo Chiavi, ma non so quale sia la differenza tra loro. Per KeyValue, non so cosa sia - ha un tipo int, restituisce il valore char del tasto premuto?KeyEventArgs.KeyData, KeyEventArgs.KeyCode e KeyEventArgs.KeyValue

Non ho molta esperienza con gli eventi chiave; qualsiasi spiegazione su come funzionano e su come usarli sarebbe molto apprezzata.

risposta

19

KeyCode contiene i dati per la chiave che ha prodotto l'evento KeyUp o KeyDown. KeyData contiene la combinazione di quella chiave insieme a CTRL, MAIUSC o ALT se qualcuno di questi è stato premuto.

Esempio:

  • Premere (e tenere premuto) CTRL. KeyDown verrà generato, KeyCode sarà Keys.ControlKey, KeyData sarà Keys.ControlKey | Keys.Control.
  • Mentre si tiene premuto CTRL, premere MAIUSC. KeyDown verrà generato, KeyCode sarà Keys.ShiftKey e KeyData sarà Keys.ShifKey | Keys.Shift | Keys.Control.

noti che KeyData e KeyCode può contenere qualsiasi valore nella Keys censimento (come Keys.A, Keys.NumPad4 o Keys.Up). Notare che quando uno dei tasti modificatori viene premuto, è rappresentato da due valori in KeyData (uno per la chiave e uno per il valore del modificatore). I modificatori sono disponibili anche tramite la proprietà Modifiers.

KeyValue restituirà un valore numerico che rappresenta la chiave, essenzialmente un numero intero che rappresenta il valore trovato in KeyCode.

+0

Quindi i dati chiave possono essere solo i tasti CTRL ALT o MAIUSC? E per quanto riguarda KeyValue? – Bosak

+0

Ora capisco grazie – Bosak

+0

Quindi, quando premo un tasto rapido, il codice può essere solo Keys.ShiftKey e non sarà mai Keys.Shif? Oh e le chiavi sono enumerate da 0 a MaxKeys o sono enumerate come nella tabella ASCI ad esempio A - 65 – Bosak