Attualmente sto gestendo l'evento KeyDown di un controllo DataGridView. Una delle colonne è riempita da valori calcolati e voglio che l'utente sia in grado di sovrascrivere il valore della cella se lo desidera.Evento KeyDown - come sapere facilmente se il tasto premuto è numerico?
Quando l'utente preme un tasto numerico, la cella entra in EditMode e consente all'utente di sovrascrivere il valore. Se la chiave non è numerica, non succede nulla ...
Questo funziona abbastanza bene ... il problema è che trovo il codice brutto ... Non riesco a trovare un modo pulito per gestire tutti i tasti numerici in una sola condizione, così ho fatto un caso interruttore costrutto trattare tutti i possibili tasti numerici, in questo modo:
switch (e.KeyCode)
{
case Keys.D0:
case Keys.D1:
case Keys.D2:
case Keys.D3:
case Keys.D4:
case Keys.D5:
case Keys.D6:
case Keys.D7:
case Keys.D8:
case Keys.D9:
case Keys.Decimal:
case Keys.NumPad0:
case Keys.NumPad1:
case Keys.NumPad2:
case Keys.NumPad3:
case Keys.NumPad4:
case Keys.NumPad5:
case Keys.NumPad6:
case Keys.NumPad7:
case Keys.NumPad8:
case Keys.NumPad9:
[code to make the cell go to editMode, etc...]
Certo, funziona, ma ci deve essere una migliore e più breve, giusto?
Tutto quello che potevo trovare con Google è la conversione e.KeyCode ad un char, ma quando si utilizza i tasti numerici, va dà lettere anche per i valori numerici ...
Grazie.
O anche e.KeyChar.IsDigit()? – Rawling
Grazie a Tim e Rawling .Questa è la soluzione con cui sono andato. Devo anche gestire un evento chiave DEL in KeyDown ... Avrei preferito tenere tutto allo stesso livello spot, ma questo codice sembra di gran lunga il più bello. Grazie anche a tutti gli altri. –