文本框 : float 的 C# 输入验证

标签 c# textbox floating-point validation maskedtextbox

这个看似简单的任务让我有些头疼。我只是想让用户在 float.TryParse 之后将任何文本输入到 Textboxish 控件中。

我可以使用普通的 TextBox 并检查某些 btnOK_Click 中的文本,但这显然是蹩脚的。此外,还有一个不错的内置 MaskedTextBox 控件,但我未能将其掩码设置为等于 float.TryParse。此外,它似乎仅在发生焦点更改时才检查有效性。

在网上四处挖掘带来了一些有趣的想法,但没有一个像我想要的那样好。

你是怎么解决这个问题的?我只是错过了一个明显的解决方案,还是我必须自己实现这个功能?

我知道 SO 上有一些类似的线程,但没有找到可行的解决方案。

更新:是的,WinForms。

最佳答案

编辑

好吧,这让事情变得简单多了...只需将 Validating 事件处理程序添加到您的文本框 并在后面的代码中执行 TryParse。如果无效,则提示用户。

验证将在用户完成输入并将焦点从 TextBox 移开时触发,因此如果您需要即时检查,您可以改为处理 TextChanged 或 KeyPress/KeyUp 事件处理程序

原创

这是在asp.net还是winforms/wpf中

如果是 asp.net,您可以结合使用 RegularExpressionValidator(考虑逗号分隔、1 个小数点等...)和 RangeValidator 来设置 float 的最小值/最大值。

除此之外,保证它的唯一方法是将文本框包装在更新面板中,在其上粘贴 CustomServerValidator,然后在服务器验证函数中,对 执行 TryParse >TextBox.Text 值,如果成功,IS VALID,如果失败,NOT VALID

关于文本框 : float 的 C# 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828546/

相关文章:

python - 如何确定小数是否可以完全表示为 Python float?

java - NaN 的位模式真的依赖于硬件吗?

c# - 如何使用 ef 为迁移构建强制执行 Restrict DeleteBehavior?

c# - 从 NetDrives 上的巨大目录中获取文件

c# - 动态 Windows 窗体文本框

c# - 将文本文件行导入特定文本和组合框

python - 更多 cttypes c_float() 精度

c# - 使用连接查询还是使用 LINQ 魔法?

c# - Unity 向 UI Slider 发送值并更新 Slider bar

jquery - 单击 Firefox 中的文本框不会获得焦点