我试过这段代码只限制数字。当我们尝试输入字符或任何其他控件时,它只键入数字并且不输入,即使它也不输入退格。如何防止退格。
private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\\d+"))
e.Handled = true;
}
答案 0 :(得分:27)
您无需使用RegEx来测试数字:
private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar))
e.Handled = true;
}
允许退格:
private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Back)))
e.Handled = true;
}
如果您想添加其他允许的密钥,请查看Keys
枚举并使用上述方法。
答案 1 :(得分:8)
要仅允许Windows应用程序中文本框中的数字,请使用
private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Back)))
e.Handled = true;
}
此示例代码将允许输入数字和退格键以删除以前输入的文本。
答案 2 :(得分:6)
使用Char.IsDigit Method (String, Int32)方法并查看Microsoft的NumericTextbox
答案 3 :(得分:5)
将以下代码放入文本框的按键事件中:
private void txtbox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
}
答案 4 :(得分:3)
您可以使用Char.IsDigit()
方法
答案 5 :(得分:0)
上面建议的方法只能阻止用户输入数字以外的任何内容, 但是如果用户在文本框中复制并粘贴一些文本,它将失败,因此我们还需要检查文本更改事件的输入
创建ontextchangeEvent
private void TxtBox1_textChanged(object sender, EventArgs e)
{
if (!IsDigitsOnly(contactText.Text))
{
contactText.Text = string.Empty;
}
}
private bool IsDigitsOnly(string str)
{
foreach (char c in str)
{
if (c < '0' || c > '9')
return false;
}
return true;
}