C# Hacer un cuadro de texto que sólo acepte números

  1. Hacer una textbook que sólo acepte números usando la clase KeyPressEventArgs en C
  2. Haz una textbook que sólo acepte números usando el método Regex.IsMatch en C
  3. Haz una textbook que sólo acepte números usando el método NumericUpDown

Al hacer Windows Forms, algunos campos de texto sólo necesitan un valor numérico. Por ejemplo, si queremos obtener los números de teléfono de los usuarios, entonces tendremos que restringir nuestra textbook a valores numéricos solamente.

En este artículo, nos centraremos en los métodos que hacen que una textbook sólo acepte números.

Hacer una textbook que sólo acepte números usando la clase KeyPressEventArgs en C

KeyPressEventArgs es una clase C# que especifica el carácter que se introduce cuando el usuario pulsa una tecla. Su propiedad KeyChar devuelve el carácter que el usuario ha tecleado. Aquí hemos usado el evento KeyPress para limitar nuestra textbook a valores numéricos solamente.

El código de la tecla que realiza esta acción es el siguiente:

!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
        (e.KeyChar != '.');

Aquí e es un objeto KeyPressEventArgs que usa la propiedad KeyChar para obtener la clave introducida.

Código de ejemplo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
                (e.KeyChar != '.'))
            {
                    e.Handled = true;
            }

            // only allow one decimal point
            if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
            }
        }
    }
}

Producción:

//only allows numeric values in the textbox

C# TextBox sólo acepta números

Haz una textbook que sólo acepte números usando el método Regex.IsMatch en C

En C# podemos usar expresiones regulares para comprobar varios patrones. Una expresión regular es un patrón específico para realizar una acción específica. Expresiones Regulares es una clase de C# que contiene la definición del método Regex.IsMatch(). En C#, tenemos ^[0-9]+$ y ^\d+$ expresiones regulares para comprobar si una cadena es un número.

La sintaxis correcta para usar este método es la siguiente:

Regex.IsMatch(StringName, @"Expression");

Código de ejemplo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "  ^ [0-9]"))
            {
                textBox1.Text = "";
            }
        }
       
    }
}

Producción:

//A textbox created that only accepts numbers.

C# TextBox sólo acepta números

Haz una textbook que sólo acepte números usando el método NumericUpDown

NumericUpDown proporciona al usuario una interfaz para introducir un valor numérico usando los botones de arriba y abajo dados con el textbox. Puedes simplemente arrastrar y soltar un NumericUpDown desde la Caja de herramientas para crear una textbook que sólo acepte números.

También puedes crear un objeto NumericUpDown dinámicamente. El código para generar un NumericUpDown es el siguiente:

private System.Windows.Forms.NumericUpDown numericUpDown;  
this.numericUpDown = new System.Windows.Forms.NumericUpDown();

Tiene varias propiedades, que puedes alterar abriendo las Propiedades de Windows.

Producción:

C# TextBox sólo acepta números Numeric Up Down