9/22/2007

[C#] TextBox só de Inteiros

Duas forma simples de deixar o TextBox apenas aceitando valores inteiros. Segue o código abaixo:

public void validarCaracInt(KeyEventArgs e)
{
if (!Char.IsNumber((char)e.KeyValue) | e.Shift)
{
if (e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
e.SuppressKeyPress = false;
else
e.SuppressKeyPress = true;
}
else if (e.KeyCode == Keys.OemPeriod || e.KeyCode == Keys.Oemcomma || e.KeyCode == Keys.OemMinus) //(.), (,) (-) são considerados numéricos
{
e.SuppressKeyPress = true;
}
}

public void validarCaracIntRegex(KeyEventArgs e)
{
if (Regex.IsMatch(((char)e.KeyValue).ToString(), "^[0-9]$"))
e.SuppressKeyPress = false;
else
e.SuppressKeyPress = true;

if (e.Shift)
e.SuppressKeyPress = true;

if (e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete || e.KeyCode == Keys.Right || e.KeyCode == Keys.Left)
e.SuppressKeyPress = false;
}


E no evento Key Press do TextBox:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
//validarCaracInt(e); // <--- Utilize este
validarCaracIntRegex(e); // <--- ou este. Fica a sua escolha
}

Nenhum comentário: