2012-01-18 43 views
21

En mi KeyDownEventHandler necesito saber cuál es el KeyCode para "," y ".".¿Cuál es el código de clave para "," (coma) y "." (Punto) en .NET?

No puedo encontrarlos, es por eso que pregunto. ¡Gracias!

+0

¿Seguro que desea utilizar el 'KeyDown' y no el' manejador KeyPress'? – CodesInChaos

+4

El controlador de eventos KeyDown maneja los trazos de tecla, no su representación en el sistema, lo que depende de la configuración regional. Para manejar el personaje, use el evento KeyPress. – pistipanko

Respuesta

19

Una clave y un caracter no son lo mismo. El diseño del teclado se transforma entre ellos, y esa transformación no es trivial. Probablemente esté haciendo algo incorrecto al usar KeyDown. Si desea saber qué carácter ingresó un usuario, debe usar KeyPress, que le da al personaje ya traducido.

Por ejemplo, Keys.Decimal es una clave en el teclado numérico que corresponde a . en el diseño de EE. UU., Y , en el diseño alemán. Keys.Oemcomma y OemPeriod son probablemente , y . debajo de las letras. Pero en otros diseños que pueden ser diferentes.

+0

Keys.Deciaml es para el teclado numérico ¿para el segundo decimal? –

+1

No hay un "segundo decimal". Hay una clave para * coma * y otra para * período *, pero cuál de ellas produce el separador decimal depende de la configuración regional. También estoy bastante seguro de que hacer esta pregunta significa que ya estás en el camino equivocado. Deberías trabajar con personajes, no con teclas. – CodesInChaos

2

lo hice:

  1. creado un proyecto WinForm con un único cuadro de texto.
  2. Se ha agregado el controlador de eventos keydown.
  3. Deja un punto de quiebre en ella
  4. Llegamos a este:

enter image description here

0

Uso Keys.Oemcomma y Keys.OemPeriod

0

Has probado esto c

Un filtro de flotación "":

Select Case e.KeyChar 
    Case "0"c To "9"c 
    Case "."c 
     If .Text.Contains(".") Then 
      e.Handled = True 
     End If 
    Case ChrW(Keys.Delete), ChrW(Keys.Back) 
    Case Else 
     e.Handled = True 
End Select 
+0

¿Hay una sintaxis de C# para esto? – Bosak

Cuestiones relacionadas