Actualmente estoy manejando el evento KeyDown de un control DataGridView. Una de las columnas está llena de valores calculados y quiero que el usuario pueda anular el valor de la celda si lo desea.Evento KeyDown: cómo saber fácilmente si la tecla presionada es numérica.
Cuando el usuario presiona una tecla numérica, la celda entra en EditMode y le permite al usuario anular el valor. Si la clave no es numérica, no pasa nada ...
Eso está funcionando bastante bien ... el problema es que me parece feo el código ... Parece que no puedo encontrar una manera ordenada de manejar todas las teclas numéricas en una sola condición, así que he hecho una construcción de caja de conmutación para hacer frente a todos los posibles teclas numéricas, como esto:
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...]
Claro, es que funciona, pero tiene que haber una mejor y una forma más corta, ¿verdad?
Todo lo que podía encontrar a través de Google es convertir e.KeyCode a un char, pero cuando se utiliza el teclado numérico, que va da las cartas, incluso para los valores numéricos ...
Gracias.
O incluso e.KeyChar.IsDigit()? – Rawling
Gracias Tim y Rawling. Esa es la solución que fui con. también tengo que manejar un evento de tecla dEL en KeyDown ... hubiera preferido mantener todo al mismo lugar, pero este código se ve de lejos el mejor. Gracias a todos los demás también. –