標籤:log rgs 苦逼 number route indexof string 最大 其他
說實話重來沒想到驗證輸入是如此的苦逼的一件事情。 網上好多驗證都是在輸入完成後再驗證,我的想法是在輸入的時候就限制輸入,這樣我就不用再寫代碼來驗證了應為是手機端,所以不用判斷其他非法字元,直接把Textbox的屬性InputScope設定為"Number"就是了,反正在目前版本的UWP中純數字鍵台還無法切換到其他的字元鍵盤去下面的代碼是一個金額文字框的驗證,算是拋磚引玉吧。歡迎還有更好的方案指點! 直接上代碼:
/// <summary> /// 檢查輸入金額,當檢測到小數掉後只能輸入2位小數 /// 當充滿12個字元後只能修改小數的值 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void valueTextBox_TextChanged(object sender, TextChangedEventArgs e) { //如果不為空白 if (valueTextBox.Text != string.Empty) { if (valueTextBox.Text.Contains(‘.‘)) { if (valueTextBox.Text.Count() == 10) { valueTextBox.MaxLength = valueTextBox.Text.IndexOf(‘.‘) + 3; } else { valueTextBox.MaxLength = valueTextBox.Text.IndexOf(‘.‘) + 3; } } else { //當整數達到9位後自動補全小數位,並移動游標到最後一位 if (valueTextBox.Text.Count() == 9) { //valueTextBox.Text += ".00"; valueTextBox.MaxLength = 9; valueTextBox.SelectionStart = valueTextBox.Text.Length; } } } else { //為空白就重設金額輸入框的最大字元數為12 valueTextBox.MaxLength = 12; } } /// <summary> /// 當整數位為9位且當前輸入的是小數點時,設定textbox最大字元數為12,移動游標到最後位置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void valueTextBox_KeyDown(object sender, KeyRoutedEventArgs e) { //不知道為什麼和預設的小數點的代碼不一樣,預設為110 if (e.Key.ToString() == "190") { if (valueTextBox.Text.Count() == 9) { valueTextBox.MaxLength = 12; valueTextBox.SelectionStart = valueTextBox.Text.Length; } } }
太晚了下次再補GIF上來
來自為知筆記(Wiz)
[UWP小白日記-15]在UWP手機端即時限制Textbox的輸入