Pregunta

¿Alguien sabe por qué Microsoft no enviar un numéricos cuadro de texto con su .NET framework, por ejemplo,un cuadro de texto para asegurar que los caracteres introducidos son siempre un número válido?Es algo que se utiliza comúnmente en aplicaciones de diferentes sabores y, de hecho, algo que la mayoría de la GUI de bibliotecas (bueno, los que yo conozco) entregar en alguna manera.Mientras que no que difícil escribir su propia, no es trivial, ya sea.

Por lo tanto, estoy interesado en saber si alguien puede racionalizar esta omisión.

editar:Gracias por las sugerencias.Mientras enmascarado cuadros de texto y numéricos de hasta-downs tienen su lugar;Estoy interesado en un control que parece un cuadro de texto, pero realiza automáticamente una comprobación de la clave de prensa que la entrada corresponde a un número válido.En mi (obviamente limitada) de la experiencia, esto es algo que se usa bastante (que no siempre quiere la estática de las restricciones impuestas por enmascarados cuadros de texto, así como que no siempre quieren los de arriba-abajo de los controles en el lado).

Hay un montón de implementaciones con diferentes grados de calidad de este en la red y, de hecho, incluso hay un ejemplo de esto en el MSDN.

edit2:Gracias chicos, por lo que suena como el numérico de arriba-abajo es el .RED de control a utilizar para la entrada numérico único (y la razón por la que en realidad no tienen un explícito numérico control de cuadro de texto).Hubiera sido genial si es automáticamente rechazado la entrada de caracteres no numéricos (en keypress, pegar, etc) pero supongo que es lo suficientemente bueno que se realiza la validación cuando el control pierde el foco.Y, uno podría hacer la tecla, en la pasta de validación si uno estuviera realmente interesado...

¿Fue útil?

Solución

En la segunda Garry Shutlers recomendación de uso de NumericUpDown.Quizá no como el de arriba-abajo-los controles, pero que es el aspecto estándar de una entrada numérica de control en Windows, y usted debe pensar dos veces antes de usar un look diferente.

Si al finalizar la codificación de su propia aplicación (o la búsqueda de uno en la web), hay algunas trampas a mirar hacia fuera para.Recuerde que hay muchas maneras para que un valor para tener en un control además de las pulsaciones de teclas.El que en su enlace de MSDN no se anulan pegar, así que usted puede fácilmente ctrl-V no numérico cadena en el control.

Otros consejos

Usted podría utilizar un MaskedTextBox

No es la NumericUpDown el control que se hace específicamente para la entrada de números y puede ser utilizado como un cuadro de texto.

Comenzando con WinForms 2.0, tiene un MaskedTextBox.Usted puede configurar la máscara a lo que usted desea, es decir,para el uso de números de la máscara de todos los 0s.

Algunos de los .NET Framework controles extrañamente no exponer todas las características de la base de control de Windows que se envuelven.En este caso, por alguna razón la ES_NUMBER el estilo no ha sido implementado.

Usted podría manejar el evento HandleCreated (o anular OnHandleCreated, el texto no está sellado) y de la llamada SetWindowLong para establecer el ES_NUMBER estilo en la Edición subyacente de control. ES_NUMBER se define como 0x2000 en WinUser.h.

Usted puede también derivar de la clase TextBox y agarrar el teclado evento y asegurar nada más que números se escriben.

Si se tratara de una página Web, el mismo habría sido hecho a un cuadro de texto html con Javascript.

Microsoft deja para el 3er partes para llenar los vacíos respecto a la falta de controles en el cuadro de herramientas.Me imagino que el tiempo y el costo en función de su razón de ser.

En este caso, sin embargo, creo que la FilteredTextBox proporciona la funcionalidad que usted describe.

Basado en la segunda edición:

El Los Formularios Windows forms FAQ le dice a usted cómo restringir los caracteres en un cuadro de texto en cuestión 26.12:

26.12 ¿Cómo puedo restringir los caracteres que mi cuadro de texto puede aceptar?

Usted puede manejar el cuadro de texto del evento KeyPress y si el char pasado en que no es aceptable, la marca de los eventos argumento como mostrando el carácter ha sido tratado.A continuación es un derivado de la caja de texto que sólo acepta dígitos (y los caracteres de control, tales como la tecla de retroceso, ...).Aunque el fragmento de código que utiliza un derivado de cuadro de texto, no es necesario, puede agregar el controlador de su formulario principal.

Consulte las preguntas frecuentes para el código de ejemplo.

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