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

maf*_*afu 3 c# floating-point validation textbox maskedtextbox

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

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

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

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

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

更新:是的,WinForms.

Eoi*_*ell 6

编辑

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

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

原版的

这是在asp.net或winforms/wpf

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

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


rei*_*ein 5

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

我通过简单地尝试来解决这个问题,TryParse()如果LostFocusTryParse 失败,我将文本框背景着色为淡红色,以明显表明出现了问题。

  • 你改变颜色的想法很好。在我的解决方案中,立即对无效值着色可以让用户清楚地知道他应该更改该值。 (2认同)