繁体   English   中英

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

[英]C# Input validation for a Textbox: float

这个简单的任务给我带来了一些麻烦。 我只想让用户输入任何成功的float.TryParse文本到Textboxish控件中。

我可以使用普通的TextBox并检查一些btnOK_Click中的Text,但这显然很蹩脚。 此外,有一个很好的内置MaskedTextBox控件,但我没有设置它的掩码等于float.TryParse 此外,它似乎仅在发生焦点变化时检查有效性。

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

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

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

更新:是的,WinForms。

编辑

好吧,这让它变得更容易......只需在您的文本框中添加一个Validating事件处理程序,并在后面的代码中执行TryParse 如果它无效,则提示用户。

当用户完成输入并从TextBox移动焦点时,将激活验证,因此如果您需要进行快速检查,则可以处理TextChanged或KeyPress / KeyUp事件处理程序。

原版的

这是在asp.net或winforms / wpf

如果是asp.net,你可以使用RegularExpressionValidator (用于说明逗号分隔,1小数点等等)和RangeValidator来设置浮点数的最小值/最大值。

除此之外,保证它的唯一方法是将文本框包装在updatepanel中,在其上粘贴CustomServerValidator,并在服务器验证函数中,对TextBox.Text值执行TryParse ,如果成功,则为有效,如果失败,则无效

使用Validating和验证为false时要小心。 您可能会发现,除非您输入有效数据,否则您无法将焦点从文本框移开,这是一个非常大的可用性痛苦。

我通过在LostFocus上尝试TryParse()来解决这个问题,如果TryParse失败,我会将文本框背景的颜色设置为偏红色,以明显出现问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM