3

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

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

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

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

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

更新:是的,WinForms。

4

2 回答 2

6

编辑

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

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

原来的

这是在 asp.net 还是 winforms/wpf

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

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

于 2009-05-06T08:20:06.873 回答
4

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

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

于 2009-05-06T08:51:49.777 回答