Pregunta

Para un proyecto, construí una columna DataGridView personalizada que contiene los controles NumericUpDown. Se implementa de manera similar a la sugerencia de Microsoft

La columna funciona bien en Windows XP. Acepta los dígitos introducidos y el separador decimal. Bajo Windows Vista tengo el extraño problema de que el control solo acepta el separador decimal ingresado por el teclado numérico, pero no del bloque principal del teclado.

Debo agregar que trabajo con la configuración de cultura alemana (Suiza) en Windows Vista y la distribución del teclado alemán (Suiza) está activada. El separador decimal en Suiza es.

¿Alguien tiene una idea para la razón y quizás una solución? ¡Muchas gracias!

Michael

Editar: Encontré la solución a mi problema.

  1. Para aclarar la situación un poco más. El control NumericUpDown que uso implementa IDataGridViewEditingControl y hereda de NumericUpDown. Debido a IDataGridViewEditingControl implemento el método EditingControlWantsInputKey. Y en la implementación de este método encontré mi error o lo que salió mal.

  2. En el método, inspeccioné las claves ingresadas y decidí si el control tenía que manejarlo. Pero para el separador decimal solo esperaba Keys.Decimal . En mi caso especial (incorrecto) la clave no pudo ser igualada. Lo que faltaba era buscar Keys.OemPeriod también. Y esa fue la solución.

¿Fue útil?

Solución

¿Puede pegar su código OnKeyDown y / o OnKeyPress? Al menos el código de filtrado de claves relevante. Será más fácil detectar cualquier problema.

Por cierto, normalmente uso los teclados inglés británico y portugués brasileño, así que he tenido mi parte de estos problemas. Ese tipo de fuerza te obliga a convertirte en un experto en localización :)

Editar : Oh, lo siento, solo vuelve a leer y entiendo que estás usando el control NumericUpDown de valores. ¿Me puede indicar el código de la columna para que pueda probarlo aquí? Probablemente la configuración regional no se está configurando para el control, y tendrás que hacerlo manualmente en algún momento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top