这个看似简单的任务让我有些头疼。我只是想让用户在 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,然后在服务器验证函数中,对 执行
值,如果成功,IS VALID,如果失败,NOT VALIDTryParse
>TextBox.Text
关于文本框 : float 的 C# 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828546/