我正在开发一个UWP
应用,我需要确保用户无法输入任何内容,除了正整数,最大长度为8个字符后跟decimal
和另外两个{{ 1}}。
digits
可能是
Examples
我必须在12345.50,
123456.50,
123.23
上实现这些。我想确保键盘上不能使用TextBox
键,而且必须从Shift
键盘输入数字Numeric
我编写了这段代码,但是它接受了特殊字符和(both)
键。
让我们假设只有一种输入模式,只能通过shift
keyboard
答案 0 :(得分:0)
你的假设是一个现实世界的场景。您无法阻止用户输入除键盘以外的数据:语音,墨水,IME,自动提示等都将在TextBox中输入文本,而无需通过KeyDown事件。
确保TextBox仅获得有效格式的唯一方法是在收到唯一的格式之后:在TextChanging,TextChanged,LostFocus,submit-button输入等中。
由于命中接受要求是自包含的TextChanging可能是最佳位置:确保允许和删除文本以及无效的字符。注意不要限制用户无法获得有效输入:不要拒绝"。"在用户输入这些数字之前,不会有两位数字。
另一个选项(如果两个字段相互依赖则更好)是让用户输入无效输入但告诉他们:保留错误输入,但将其标记为无效并且不接受表单直到它有已经修好了。
另请参阅位于http://docs.uwpcommunitytoolkit.com/en/master/controls/TextBoxMask/的UWP社区工具包中的TextBoxMask属性