C# Faça uma caixa de texto que só aceita números
-
Fazer uma
caixa de texto
que só aceita números utilizando a classeKeyPressEventArgs
emC#
-
Fazer uma
Caixa de texto
que só aceitaNúmeros
utilizandoRegex.IsMatch()
Método emC#
-
Fazer uma
caixa de texto
que só aceitanúmeros
utilizando o métodoNumericUpDown
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
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.
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: