sábado, 26 de marzo de 2016

Pregunta C# (16 de 20): ¿Cómo Hacer que un Campo de Texto Sólo Acepte Números?

Índice

1. Introducción
2. Palabras Clave
3. Contexto
3.1 System.Windows.Forms.TextBox
4. Control TextBox con Sólo Dígitos
5. Recursos
5.1 Aplicación Windows Forms P1620
5.2 Vídeo de Microsoft Virtual Academy
6. Conclusiones
7. Literatura & Enlaces

1. Introducción

En esta nueva pregunta C# se aborda un tema interesante a la hora de construir la interfaz gráfica de usuario para una aplicación, el cual consiste en permitir sólo valores numéricos como entrada en un campo de texto. Para esto se demuestra cómo manipular el evento KeyPress de un control TextBox regular.

2. Palabras Clave

  • Campo de texto
  • GUI
  • Interfaz gráfica de usuario
  • Repositorio
  • Visual Studio

3. Contexto

3.1 System.Windows.Forms.TextBox


La clase TextBox ("TextBox Class", 2016) representa un campo de texto de Windows. Este componente puede ser instanciado usando un enfoque programático o usando la Caja de herramientas de Visual Studio.
TextBox en Visual Studio
Figura 1. TextBox en Visual Studio.

Por defecto este control acepta como entrada cualquier carácter digitado desde el teclado. Sin embargo, el programador puede cambiar el comportamiento de entrada manipulando los eventos asociados a la clase de este control para la inserción de sólo dígitos.

Vale mencionar que para la entrada de sólo dígitos se cuenta con el control especializado NumeriUpDown. Pero para efectos de aprendizaje y entendimiento del funcionamiento del control TextBox, se opta por la escritura de código C# para determinar qué tipo de caracteres se debe permitir como entrada en el campo de texto.

4. Control TextBox con Sólo Dígitos

Para demostrar cómo se puede programar un control TextBox para la entrada de sólo dígitos se crea una aplicación Windows Forms en Visual Studio con la siguiente interfaz gráfica de usuario.
Aplicación de demostración
Figura 2. Aplicación de demostración.
A este campo (el de la Figura 2) llamado txtNumerico se altera el comportamiento del evento KeyPress desde la ventana Propiedades de Visual Studio, y se escribe el siguiente código dentro de la implementación de este evento:

private void txtNumerico_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar);
}

La propiedad Handled ("KeyPressEventArgs.Handled Property", 2016) obtiene o establece un valor lógico booleano para indicar que el evento KeyPress fue gestionado:
  • true: el evento fue gestionado.
  • false: el evento no fue gestionado.
En este caso particular cuando se presiona una tecla alfabética el método Char.IsDigit retorna false y se niega su valor con el operador ! dando como resultado true. Este valor se asigna a Handled y la presión de la tecla alfabética se omite.

5. Recursos

5.1 Aplicación Windows Forms P1620

Repositorio en GitHubhttps://github.com/Fhernd/P1620

5.2 Vídeo de Microsoft Virtual Academy

Este es el vídeo en donde el equipo de expertos Gerry O'Brein y Paul Pardi de MVA, responden y explican esta pregunta:

6. Conclusiones

En esta pregunta quedó demostrado que la manipulación del evento KeyPress permite controlar los tipos de caracteres permitidos para un campo de texto TextBox.


En la próxima pregunta C# se comprenderá cómo redondear un valor decimal a dos dígitos.

7. Literatura & Enlaces

Top C# Questions Answered | Microsoft Virtual Academy (2016, marzo 26). Recuperado desde: https://mva.microsoft.com/en-US/training-courses/twenty-c-questions-answered-8298?l=IZKp4VYy_4004984382
TextBox Class (System.Windows.Forms) (2016, marzo 26). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.aspx
KeyPressEventArgs.Handled Property (System.Windows.Forms) (2016, marzo 16). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.handled(v=vs.110).aspx


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.