C#textbox只能输入数字,整数或者小数
时间: 2025-04-22 19:29:20 AIGC 浏览: 51
为了确保 `TextBox` 控件只接受数字、整数或小数的输入,在 C# 中你可以通过处理键盘事件或其他验证机制来限制用户输入的内容。
### 使用正则表达式过滤
一种常见的做法是在文本框内容改变时进行验证,并使用正则表达式检查是否符合条件:
```csharp
private void textBox1_TextChanged(object sender, EventArgs e)
{
// 正则匹配非数字字符,包括负号和小数点
string pattern = @"[^0-9.-]+";
if (Regex.IsMatch(textBox1.Text, pattern))
{
MessageBox.Show("只能输入数字!");
// 移除非法字符
textBox1.Text = Regex.Replace(textBox1.Text, pattern, "");
// 将光标移动到文本结尾
textBox1.SelectionStart = textBox1.Text.Length;
}
}
```
上述代码会阻止所有不符合规则 `[0-9.-]` 的字符进入文本框内。但是它也允许连续的小数点或者减号存在,因此还需要进一步优化逻辑判断。
### 更精确地控制键入值
另一种更直接的方式是拦截按键操作本身,这可以避免用户粘贴无效数据的情况发生:
```csharp
private bool IsInputKeyValid(KeyPressEventArgs e)
{
char ch = e.KeyChar;
if (!char.IsControl(ch) && !char.IsDigit(ch) &&
(ch != '.') && (ch != '-'))
{
return false; // 非有效字符返回false
}
// 只能有一个小数点
if ((ch == '.') && (textBox1.Text.IndexOf('.') > -1))
{
return false;
}
// 负号只能出现在第一位
if ((ch == '-') && (textBox1.TextLength > 0 || textBox1.SelectionStart != 0))
{
return false;
}
return true;
}
// 在Form Designer中设置此事件处理器关联
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !IsInputKeyValid(e);
}
```
这个版本不仅防止了错误字符被录入,还解决了如重复添加小数点等问题。
###
阅读全文
相关推荐



















