c#中textbox只能输入数字, 包括小数

本博客讨论了在特定控件中输入数字与小数的限制,仅允许输入数字和小数点,并且详细解释了如何实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private void textBox7_KeyPress(object sender, KeyPressEventArgs e)//需求数量栏位,只能输入数字,并且可以输入小数

{

    if (e.KeyChar != 13 && e.KeyChar != 8 && !char.IsDigit(e.KeyChar) && e.KeyChar != 46)   e.Handled = true;

    int a = textBox7.Text.IndexOf('.');

    if (e.KeyChar == 46 && a > 0)  e.Handled = true;

}

为了确保 `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); } ``` 这个版本不仅防止了错误字符被录入,还解决了如重复添加小数点等问题。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值