如何防止用户在TextBox中输入正数以外的任何内容

时间:2017-04-02 18:02:17

标签: c# regex xaml uwp

我正在开发一个UWP应用,我需要确保用户无法输入任何内容,除了正整数,最大长度为8个字符后跟decimal和另外两个{{ 1}}。 digits可能是

Examples

我必须在12345.50, 123456.50, 123.23 上实现这些。我想确保键盘上不能使用TextBox键,而且必须从Shift键盘输入数字Numeric

我编写了这段代码,但是它接受了特殊字符和(both)键。

让我们假设只有一种输入模式,只能通过shift

keyboard

1 个答案:

答案 0 :(得分:0)

你的假设是一个现实世界的场景。您无法阻止用户输入除键盘以外的数据:语音,墨水,IME,自动提示等都将在TextBox中输入文本,而无需通过KeyDown事件。

确保TextBox仅获得有效格式的唯一方法是在收到唯一的格式之后:在TextChanging,TextChanged,LostFocus,submit-button输入等中。

由于命中接受要求是自包含的TextChanging可能是最佳位置:确保允许和删除文本以及无效的字符。注意不要限制用户无法获得有效输入:不要拒绝"。"在用户输入这些数字之前,不会有两位数字。

另一个选项(如果两个字段相互依赖则更好)是让用户输入无效输入但告诉他们:保留错误输入,但将其标记为无效并且不接受表单直到它有已经修好了。

另请参阅位于http://docs.uwpcommunitytoolkit.com/en/master/controls/TextBoxMask/的UWP社区工具包中的TextBoxMask属性