[UWP小白日記-15]在UWP手機端實時限制Textbox的輸入


說實話重來沒想到驗證輸入是如此的苦逼的一件事情。

    網上好多驗證都是在輸入完成后再驗證,我的想法是在輸入的時候就限制輸入,這樣我就不用再寫代碼來驗證了
應為是手機端,所以不用判斷其他非法字符,直接把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上來






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM