WPF中TextBox限制輸入不起作用的問題


最近再用textbox做限制輸入時遇到一個莫名其妙的問題:

首先看代碼:

 <TextBox  Name="txtip1" Height="40" Width="60" FontSize="20"  MaxLength="3"  TextChanged="TextBox_TextChanged">

 private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            try
            {
                //屏蔽中文輸入和粘貼輸入
                System.Windows.Controls.TextBox textBox = sender as System.Windows.Controls.TextBox;
                if (textBox == null) return;
                TextChange[] change = new TextChange[e.Changes.Count];
                e.Changes.CopyTo(change, 0);

                int offset = change[0].Offset;
                if (change[0].AddedLength > 0)
                {
                    double num = 0;
                    if (!Double.TryParse(textBox.Text, out num))
                    {
                        textBox.Text = textBox.Text.Remove(offset, change[0].AddedLength);
                        textBox.Select(offset, 0);
                    }
                }

                if (ComConvert.TryInt(textBox.Text) > 255)
                {
                    textBox.Text = textBox.Text.Remove(textBox.Text.Length - 1);

                    textBox.SelectionStart = textBox.Text.Length;
                }
            }
            catch (Exception ex)
            {
                WinMessage.Show("輸入數字有問題,請重新輸入!");
            }

}

感覺代碼沒有一點問題,可代碼運行時,發現所做的限制不起作用,如果把textBox.Text = textBox.Text.Remove(textBox.Text.Length - 1); 這一句注釋掉,雖然MaxLength屬性又生效了,但是又不能限制數字不大於255,而且中文輸入法還是可以輸入。原本以為在TextChanged事件中再判斷一下長度就好了,測試卻發現只能生效一次,后面就又不起作用了。又嘗試了KeyDown事件,發現還是一樣。怎么辦呢?

解決方法很簡單:只要在TextBox中將InputMethod.IsInputMethodEnabled屬性設為false即可,該屬性還可以屏蔽中文輸入法


免責聲明!

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



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