none
UWP 在TextBox中限制用户的输入内容 RRS feed

  • 问题

  • 在WPF时TextBox是有PreviewKeyDown事件的,但在UWP中没有找到这个事件,只好使用KeyDown事件来屏蔽用户的非法输入,但是我发现并不能屏蔽掉  ,。、;‘【】这样的中文符号,根本不会触发KeyDown,而且在开启拼音输入法时,可以输入字母,当用户输入字母时,输入法出现中文字,这时按Sihft或者Enter可以直接输入刚才按下的字母。现在主要是物理键盘的屏蔽,手机端倒是很简单的设置InputScope就可以了。我主要是想实现数值的输入比如:

    123456

    0.12345

    -12345

    -0.12345

    哪位老师给解答一下。谢谢.后贴上我的代码。

     private void QK_KeyDown(object sender, KeyRoutedEventArgs e)
            {
                TextBox tb = sender as TextBox;
                e.Handled = true;
                if (e.Key >= VirtualKey.NumberPad0 && e.Key <= VirtualKey.NumberPad9)//小键盘的1-9
                {
                    e.Handled = false;
                }
                if (e.Key >= VirtualKey.Number0 && e.Key <= VirtualKey.Number9)//键盘顶的1-9
                {
                    e.Handled = false;
                }
                if (e.Key == VirtualKey.Decimal)//小数点
                {
                    if (texBox.Text.IndexOf(".") == -1)
                    {
                        if (texBox.SelectionStart > 0)
                        {
                            e.Handled = false;
                        }
                    }
                }
                 //if (e.Key == Key.Decimal)//数字键盘小数点
                //{
                //    if (texBox.Text.IndexOf(".") == -1)
                //    {
                //        if (texBox.SelectionStart > 0)
                //        {
                //            e.Handled = false;
                //        }
                //    }
                //}
                if (texBox.SelectionStart == 0 && e.Key == VirtualKey.Subtract)//负号
                {
                    e.Handled = false;
                }
                if (e.Key == VirtualKey.Back)//前删
                {
                    e.Handled = false;
                }
                if (e.Key == VirtualKey.Delete)//后删
                {
                    e.Handled = false;
                }
            }

    2016年3月24日 15:27

全部回复