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

时间:2009-05-06 08:14:51

标签: c# textbox floating-point validation maskedtextbox

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

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

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

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

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

更新:是的,WinForms。

2 个答案:

答案 0 :(得分:6)

修改

这样可以让它变得更轻松......只需在文本框中添加Validating事件处理程序即可 并在后面的代码中执行TryParse。如果它无效,则提示用户。

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

<强>原始

这是在asp.net还是winforms / wpf

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

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

答案 1 :(得分:4)

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

我只需在TryParse()上尝试LostFocus即可解决此问题,如果TryParse失败,我会将文本框背景的颜色设置为偏红色,以明显出现问题。