C# Faça uma caixa de texto que só aceita números

  1. Fazer uma caixa de texto que só aceita números utilizando a classe KeyPressEventArgs em C
  2. Fazer uma Caixa de texto que só aceita Números utilizando Regex.IsMatch() Método em C
  3. Fazer uma caixa de texto que só aceita números utilizando o método NumericUpDown

Ao fazer Windows Forms, alguns campos de texto precisam apenas de um valor numérico. Por exemplo, se quisermos obter os números de telefone dos usuários, então teremos que restringir nossa caixa de texto apenas a valores numéricos.

Neste artigo, vamos nos concentrar nos métodos que fazem uma caixa de texto que aceita apenas números.

Fazer uma caixa de texto que só aceita números utilizando a classe KeyPressEventArgs em C

KeyPressEventArgs é uma classe C# que especifica o caractere inserido quando um usuário pressiona uma tecla. Sua propriedade KeyChar devolve o caractere que o usuário digitou. Aqui utilizamos o evento KeyPress para limitar nossa textbox apenas a valores numéricos.

O código chave que executa esta ação é o seguinte:

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

Aqui e é um objeto KeyPressEventArgs que utiliza a propriedade KeyChar para ir buscar a chave inserida.

Exemplo de código:

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;
            }
        }
    }
}

Resultado:

//only allows numeric values in the textbox

C# TextBox só aceita números

Fazer uma Caixa de texto que só aceita Números utilizando Regex.IsMatch() Método em C

Em C# podemos usar expressões regulares para verificar vários padrões. Uma expressão regular é um padrão específico para realizar uma ação específica. RegularExpressões é uma classe C# que contém a definição do método Regex.IsMatch(). Em C#, temos ^[0-9]+$ e ^\d+$ expressões regulares para verificar se um string é um número.

A sintaxe correta para utilizar este método é a seguinte:

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

Exemplo de código:

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 = "";
            }
        }
       
    }
}

Resultado:

//A textbox created that only accepts numbers.

C# TextBox só aceita números

Fazer uma caixa de texto que só aceita números utilizando o método NumericUpDown

O NumericUpDown fornece ao usuário uma interface para inserir um valor numérico utilizando os botões para cima e para baixo fornecidos com a caixa de texto. Você pode simplesmente arrastar e soltar um NumericUpDown da Toolbox para criar uma caixa de texto que aceita apenas números.

Você também pode criar um objeto NumericUpDown de forma dinâmica. O código para gerar um NumericUpDown é o seguinte:

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

Ele tem várias propriedades que você pode modificar abrindo as Properties Windows.

Resultado:

C# TextBox só aceita números Numérico Acima Abaixo