C# WinForms TextBox 仅允许输入数字及小数点

Oliver
Oliver
发布时间:2026-10-13| 4人浏览过
原创

本文介绍如何在C# Windows Forms应用中限制TextBox控件的输入内容。通过处理KeyPress事件,可以阻止非数字和非小数点的字符输入,同时优化了小数点的重复输入问题,确保用户只能输入有效的数值。

实现思路与目标

在编写涉及金额、数量或参数的界面时,强制用户只能输入数字能减少后续解析错误的风险。我们的目标是:

  • 允许数字:0-9。
  • 允许小数点:但需限制其出现的次数(通常只允许一个)。
  • 允许删除键:如Backspace(退格键),以便用户修改输入。
  • 拦截其他字符:字母、符号等其他所有按键直接忽略。

操作步骤

第1步:注册KeyPress事件

在窗体设计器或代码中,找到你的 TextBox 控件,并为其绑定 KeyPress 事件。假设该控件的名称为 txbEnd,双击该控件或在属性窗口的事件列表中选择KeyPress来生成事件处理器。

第2步:编写拦截逻辑

在事件处理方法中,我们需要检查按下的字符键(e.KeyChar)。根据前面的目标,逻辑如下:

  1. 处理小数点特殊情况:如果按下的是小数点 '.',且当前文本框中已经存在一个小数点(即索引不等于 -1),则视为非法输入,设置 e.Handled = true 以忽略该按键。
  2. 常规字符验证:如果不是小数点,也不是退格键(ASCII码为8),则检查是否为数字。数字的ASCII码范围是48到57。如果不满足这些条件,同样忽略按键。

第3步:完整代码实现

将以下代码复制到你生成的 KeyPress 事件方法中。请确保将代码中的 txbEnd 替换为你实际使用的TextBox控件名称。

// e.KeyChar == '.' && this.txbEnd.Text.IndexOf(".") != -1
// 表示:如果按下的是小数点,且当前文本中已包含小数点
if (e.KeyChar == '.' && this.txbEnd.Text.IndexOf(".") != -1)
{
    e.Handled = true;
}

// 检查是否是非数字、非小数点、非退格键
// ASCII 48-57: '0'-'9'
// ASCII 8: Backspace
if (!((e.KeyChar >= 48 && e.KeyChar <= 57) || e.KeyChar == '.' || e.KeyChar == 8))
{
    e.Handled = true;
}

完成判断与注意事项

运行程序后,尝试在文本框中输入字母(如 'a')、特殊符号(如 '@')或在已有小数点后再次输入小数点,你会发现光标不会移动且字符不会出现。而输入 0-9 和单个小数点,以及使用退格键删除字符均正常。 注意:

  • 粘贴检查:上述代码仅捕获键盘按键事件。如果用户从其他地方复制 "abc" 并粘贴到文本框,此方法可能无法完全拦截。如需完全禁止粘贴,建议同时处理 TextChanged 事件或使用正则表达式进行实时校验。
  • 控件引用:代码中使用 this.txbEnd,如果你的控件不在当前窗体的命名空间内,或者名称不同,请务必调整对象引用路径。
以上就是C# TextBox控件实现只能输入数字及小数点的详细内容,更多关于C# WinForms输入验证的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。